为了使所有控制器和操作都需要登录,我按照Yii2 require all Controller and Action to login中的说明进行了操作,并将下面的代码添加到web.php中
'as beforeRequest' => [
'class' => 'yii\filters\AccessControl',
'rules' => [
[
'allow' => true,
'actions' => ['login', 'forgot'],
],
[
'allow' => true,
'roles' => ['@'],
],
],
'denyCallback' => function () {
return Yii::$app->response->redirect(['user/login']);
},
],
但问题是,所有其他的操作,如忘记密码被重定向到登录页面,我想从登录所需的条件中排除用户/忘记路线.请帮助!
谢谢
2条答案
按热度按时间bjg7j2ky1#
我知道我晚了3年,但它可能是有用的其他人搜索这个答案:)
在config/web.php文件中
然后在根项目中创建一个“components”文件夹,并使用以下代码创建一个“components\AccessBehavior.php”文件:
这段代码只是检查用户是否登录并检查请求的路由。如果guest用户正在访问允许的路由(您可以在config中添加允许的路由),则什么也不做,否则将用户重定向到登录页面:)在上面的代码中,我将dektrium前缀路由设置为“auth”。当然,在允许的路由中,您必须设置您实际使用的路由,以使用户注册,确认,更改密码。
06odsfpq2#
还没有测试过,但应该能用。