使用 Yii2-user 来宾用户的控制器/操作(不需要身份验证)

Controller / Action for guest users (Does not require authentication) using Yii2-user

我正在使用 Yii2(基本)和 Yii2-user 用于有用户的网站。对于大多数操作,都需要进行身份验证。我怎样才能使控制器/操作可以作为访客访问?

我在来宾的控制器中尝试过这样的事情:

'rules' => [
    [
        'allow' => true,
        'actions' => ['index', 'confirm', 'download-form', 'upload-form'],
    ]
],

这应该足够了。但是没有。我怀疑是 Yii2-user 模块妨碍了我,总是重定向我登录。

并且我在 web.php 配置中添加了模块,如下所示:

'components' => [
    ...
    ...

    'user' => [
        'class' => 'nkostadinov\user\components\User',
        'identityClass' => 'nkostadinov\user\models\User',
        'enableConfirmation' => false,
        'as firstLoginPolicy' => [ 
            'class' => 'nkostadinov\user\behaviors\FirstLoginPolicyBehavior'
        ],
    ],
],

有什么想法吗?

我是这样解决的

在我的 web.php 配置中我有这个:

'modules' => [
...
],
'as access' => [
    'class' => \yii\filters\AccessControl::className(),//AccessControl::className(),
    'rules' => [
        [
            'actions' => ['login', 'error', 'request', 'change-password'],
            'allow' => true,
            'roles' => ['?']
        ],
        [
            //'actions' => ['logout', 'index'], // add all actions to take guest to login page
            'allow' => true,
            'roles' => ['@'],
        ],        
   ],
],
'params' => [ ... ]

所以,我添加了这条新规则来授予来宾用户访问该控制器所有操作的权限:

[
    'controllers' => ['mymodule/my-controller'],    
    'allow' => true,    
],

就是这样。

我建议您使用 mdmsoft/yii2-admin 进行身份验证