4

如果用户没有登录,那么用户应该在登录页面上被重定向,因为我找到了对我来说工作正常的函数,我使用了下面的函数

action之前的公共函数($action){        如果(\Yii::$app->getUser()->isGuest&&\Yii::$app->getRequest()->url!==Url::到(\Yii::$app->getUser()->登录Url)) {\Yii::$app->getResponse()->重定向(\Yi::$应用->getUser()->登录URL);}return parent::beforeAction($action);}

这对我来说很好,但为此我需要在每个控制器中添加函数,我想做的是,我需要在哪里执行此操作的通用函数,所以谁能告诉我最好的方法是什么?

1
  • 你为什么不使用yii\web\用户::loginRequired()? 该函数可以精确地执行您需要的操作,还可以记住当前的url。请参阅Anton M的回答。 评论 2015年10月24日9:47

2个答案2

重置为默认值
18

您需要在中添加以下代码配置/web.php之后组件部分。

“as-beforeRequest”=>[/如果来宾用户访问站点,请重定向到登录页面。“class”=>“yii\filters\AccessControl”,“规则”=>[[“actions”=>[“登录”,“错误”],“allow”=>true,],[“allow”=>true,“角色”=>[“@”],],],],
1
  • 当我把它添加到后端或前端时,它对我来说很好。
    – 恰恰
    评论 2017年6月13日11:43

实际上,若用户并没有权限,易就会自动将其重定向到登录页面。如果您有其他登录名,可以更改登录名。或者,如果您使用ajax,则可以实现自己的重定向。http://www.yiiframework.com/doc-2.0/yii-web-user.html

这里是易安的解释http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.