使用 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 进行身份验证
我正在使用 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 进行身份验证