2015-06-09 19:52:25 20337次浏览 3条回答 6 悬赏 2 金钱

yii2 后台页面如何控制没有登录的情况下,全部跳转到登录页面?

最佳答案

  • 小伙儿 发布于 2015-06-12 21:15 举报

    为了你以后做权限控制,建议增加一个 控制器中间层 在中间层用 beforeAction 做统一的过滤 代码如下

        /**
         * 在程序执行之前,对访问的方法进行权限验证.
         * @param \yii\base\Action $action
         * @return bool
         * @throws ForbiddenHttpException
         */
        public function beforeAction($action)
        {
            //如果未登录,则直接返回
            if(Yii::$app->user->isGuest){
                return $this->goHome();
            }
            //获取路径
            $path = Yii::$app->request->pathInfo;
    
            //忽略列表
            if (in_array($path, $this->ignoreList)) {
                return true;
            }
    
            if (Yii::$app->user->can($path)) {
                return true;
            } else {
                throw new ForbiddenHttpException(Yii::t('app', 'message 401'));
            }
        }
    
  • 回答于 2015-06-12 10:53 举报

    写一些控制器类,如果是游客就跳到登陆页,其它的控制器继承这个类

  • 回答于 2015-06-15 22:48 举报

    两个方式,一个是写个控制器基类,然后继承其init方法,然后做判断。

    第二个方式是,在Module类里进行处理也是一样的。

    各有好处,看你场景。

    3 条回复
    回复于 2016-04-26 16:42 回复

    场景说说看,目前一般都是第一种场景比较多

    回复于 2017-12-28 17:30 回复

    请问 model类里怎么处理这个 怎么跳转到登录页面,

    回复于 2018-01-19 09:29 回复

    Module不是model

您需要登录后才可以回答。登录 | 立即注册
acking
总监

acking 上海

注册时间:2012-05-16
最后登录:2天前
在线时长:65小时50分
  • 粉丝13
  • 金钱2565
  • 威望0
  • 积分3215

热门问题