『ONETHINK』未授权登录后台错误

本文将讲解在onethink未授权登录后台的情况下(错误根本为:未授权访问U(‘Index/index’)),登录出错,进入死循环的问题。

OT版本:1.0.131218

一. 出现原因:

错误出现,归根结底是因为在登录过后,系统默认跳转到U(‘Index/index’),如果用户没有访问这个页面的权限,那么又会再次跳转到U(‘Index/index’),从而出现死循环现象。流程如图所示:

登录死循环错误流程图
登录死循环错误流程图

常见出现页面:

  1. 新增用户过后,没有给用户进行授权;

  2. 用户没用访问U(‘Index/index’)的权限。

二. 解决方案:

1. 第一种:在创建用户时就直接授权,让创建的每一个用户,即使没有进入到某一个用户组,也有权限访问U(‘Index/index’)

2. 第二种:根据错误原因,我发现只有在未授权U(‘Index/index’)出现这个error,所以在AdminController的_initialize()方法第53行到第55行,改为:


if (!$this->checkRule($rule,array('in','1,2'))){

    if($_SERVER['REQUEST_URI'] == U('Index/index')) {

        session('[destroy]');
        $this->error('未授权访问!', U('Public/login'));
    }
    $this->error('未授权访问!');
}

即:

登录进入死循环错误解决方案
登录进入死循环错误解决方案

三. 解决原理:

如果请求过来的页面是U(‘Index/index’),那就destroy session,然后跳转到U(‘Public/login’)页面。

我的OSC@GIT onethink地址:

http://git.oschina.net/tangjr/onethink

这里的代码已经解决了我遇到的onethink问题,全部通过测试,可以直接下载使用

 

《『ONETHINK』未授权登录后台错误》有1个想法

发表评论

电子邮件地址不会被公开。