Yii2 和以前一样,配置中的请求身份验证规则不适用于页面
Yii2 as beforeRequest authentication rule in config not working for pages
在 Yii2 高级应用程序中,我试图让用户仅访问登录页面和关于页面。
所以我在 /common/config/web.php 配置文件中加入了以下规则
'as beforeRequest' => [ //if guest user access site so, redirect to login page.
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'actions' => ['login', 'error', 'request-password-reset', 'about'],
'allow' => true,
],
[
'allow' => true,
'roles' => ['@'],
],
],
],
登录、错误和请求密码重置工作正常,但关于页面不正常。
我也尝试了“/page/about”和'page/about',但我没有运气。
关于如何修复或解决此问题的任何想法。
谢谢
应该是'view'而不是'about'
很抱歉,我找到了答案,规则很好,但我使用的是页面组件和 PageController,它正在从以下控制器中的管理员(数据库)获取视图
class PageController extends Controller{
public function actionView($slug)
{
$model = Page::find()->where(['slug'=>$slug, 'status'=>Page::STATUS_PUBLISHED])->one();
if (!$model) {
throw new NotFoundHttpException(Yii::t('frontend', 'Page not found'));
}
$viewFile = $model->view ?: 'view';
return $this->render($viewFile, ['model'=>$model]);
}}
所以在规则中我需要对 PageController
呈现的所有视图使用 'view'
试试这个代码
'as beforeRequest' => [ //if guest user access site so, redirect to login page.
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'actions' => ['login', 'error', 'request-password-reset', 'about'],
'roles' => ['@']
'allow' => true,
],
[
'allow' => true,
'roles' => ['?'],
],
],
],
希望对你有用
在 Yii2 高级应用程序中,我试图让用户仅访问登录页面和关于页面。
所以我在 /common/config/web.php 配置文件中加入了以下规则
'as beforeRequest' => [ //if guest user access site so, redirect to login page.
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'actions' => ['login', 'error', 'request-password-reset', 'about'],
'allow' => true,
],
[
'allow' => true,
'roles' => ['@'],
],
],
],
登录、错误和请求密码重置工作正常,但关于页面不正常。
我也尝试了“/page/about”和'page/about',但我没有运气。
关于如何修复或解决此问题的任何想法。
谢谢
应该是'view'而不是'about'
很抱歉,我找到了答案,规则很好,但我使用的是页面组件和 PageController,它正在从以下控制器中的管理员(数据库)获取视图
class PageController extends Controller{
public function actionView($slug)
{
$model = Page::find()->where(['slug'=>$slug, 'status'=>Page::STATUS_PUBLISHED])->one();
if (!$model) {
throw new NotFoundHttpException(Yii::t('frontend', 'Page not found'));
}
$viewFile = $model->view ?: 'view';
return $this->render($viewFile, ['model'=>$model]);
}}
所以在规则中我需要对 PageController
呈现的所有视图使用 'view'试试这个代码
'as beforeRequest' => [ //if guest user access site so, redirect to login page.
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'actions' => ['login', 'error', 'request-password-reset', 'about'],
'roles' => ['@']
'allow' => true,
],
[
'allow' => true,
'roles' => ['?'],
],
],
],
希望对你有用