Yii2 as beforeRequest身份验证规则在配置中不适用于页面

时间:2017-01-25 12:54:18

标签: authentication yii2 yii2-advanced-app yii2-validation

在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',但我没有运气。

任何想法如何解决或解决此问题。

由于

2 个答案:

答案 0 :(得分:0)

它应该是'查看'而不是'关于'

对不起,我发现答案规则很好,但我使用的是页面组件,而PageController则是从以下控制器中的admin(数据库)获取视图

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]);
}}

所以在规则中我需要使用' view'对于PageController

呈现的所有视图

答案 1 :(得分:0)

试试这段代码

'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' => ['?'],
        ],
    ],
],

我希望它对你有用