2015-07-20 09:42:24 4873次浏览 4条回答 0 悬赏 5 金钱

yii2 里控制器里通过接口登录, 跳转到用户中心页面,数据库都不在本地都是访问的接口, 用户名保存到cookies中, 我想让他访问别的控制器中, 判断cookies用户名是否为空,为空就跳转到登录页面, 有办法每个控制器运行的时候都做下判断 cookies的用户吗?

最佳答案

  • KilluaCHEN 发布于 2015-07-20 11:40 举报

    报错原因,应该是 /user/login 方法所在的Controller也继承了BaseController!导致死循环了

  • 回答于 2015-07-20 09:53 举报
    1. 自定义一个BaseController继承至Controller
    2. 接着在BaseController中重写init方法,在init方法中检查Cookie
    3. 然后让其他可访问的Controller继承至BaseController
    1 条回复
    回复于 2015-07-20 10:40 回复
    public function init()
    {
        $cookies = Yii::$app->request->cookies;
        $userId = $cookies->getValue('userId', 'false');
        if(empty($userId)||$userId=='false')
        {
            return $this->redirect('/index.php/user/login');
        }else{
            return $this->render('index');
        }
    
        //parent::init();
        $this->layout='@app/views/layouts/appLayouts.php';
    }
    

    我这个样子 页面报错此页面不能被重定向

    觉得很赞
  • 回答于 2015-07-21 15:43 举报

    如果你的cookie是Yii生成的,那么使用AccessController来控制。
    否则,重写User。

  • 回答于 2015-07-22 18:29 举报

    yii不是自带了那个用户判断吗

您需要登录后才可以回答。登录 | 立即注册
ony
主管

ony

注册时间:2015-06-02
最后登录:2016-03-14
在线时长:25小时4分
  • 粉丝18
  • 金钱450
  • 威望20
  • 积分900

热门问题