RBAC 超级管理员admin权限写入session问题

浏览:2453 发布日期:2015/05/15 分类:求助交流
最近在学习后盾网3.13 第24节RABC内容,出了一点问题,老是想不通,求大神帮助。

这时后台配置<?php
/**
 * 后台配置
 */

return array(
    'RBAC_SUPERADMIN'        =>'admin',        //超级管理员名称
    'ADMIN_AUTH_KEY'        =>'superadmin',    //超级管理员识别号
    'USER_AUTH_ON'        =>true,            //是否开启权根验证
    'USER_AUTH_TYPE'        =>1,            //验证类型(1:登陆验证,2:实时验证)
    'USER_AUTH_KEY'        =>'uid',        //用户认证识别号
    'NOT_AUTH_MODULE'        =>'',            //无须验证的控制器
    'NOT_AUTH_ACTION'        =>'',            //无须验证的方法
    'RBAC_ROLE_TABLE'        =>'hd_role',        //角色表名称
    'RBAC_USER_TABLE'        =>'hd_role_user',    //角色与用户的中介表名称
    'RBAC_ACCESS_TABLE'        =>'hd_access',        //权限表
    'RBAC_NODE_TABLE'        =>'hd_node',        //节点表    
    );
?>
这是控制器<?php
/**
* 后台陆登页面
*/
class LoginAction extends Action{
    
    public function index(){
        $this->display();
    }

    //表单处理
    public function login(){
        if(!IS_POST) halt('访问的页面不存在,请重试。。。。。');
        if (md5(I('code'))!=session('verify'))  $this->error('验证码错误...');
        $username=I('username');
        $pwd=md5(I('pwd'));
        $user=M('user')->where(array('username'=>$username))->find();
        //p($user);
        if(!$user||$pwd!=$user['password']) $this->error('用户帐号或密码错识,请重试....');
        if ($user['lock']) $this->error('用户被锁定,请联系管理员解锁。');
        $data=array(
            'id'=>$user['id'],
            'logintime'=>time(),
            'loginip'=>get_client_ip(),        
        );
        M('user')->save($data);
        session(C('USER_AUTH_KEY'),$user['id']);
        session('username',$user['username']);
        session('logintime',date('Y-m-d H:i:s',$user['logintime']));
        session('loginip',$user['loginip']);
        
                          //admin超级管理员识别号 写入session
        if ($user["username"]==C("RBAC_SUPERADMIN")) {            
            session(C('ADMIN_AUTH_KEY'),  true);   //注:这里写入出问题    
                 }        
        import('ORG.Util.RBAC');
        RBAC::saveAccessList();
        p($_SESSION);    

        die();    
        $this->redirect('Admin/Index/index','','1','登陆成功,正在转跳...');
    }

    //验证码
    public function verify(){
        import('ORG.Util.Image');
        Image::buildImageVerify(1,1,'png',70,29,verify);
    }
}
?>
在admin超级管理员识别号 写入session时总出问题,删除session后,出现
Array
(
[verify] => 8f14e45fceea167a5a36dedd4bea2543
[uid] => 1
[username] => admin
[logintime] => 2015-05-15 16:20:37
[loginip] => 127.0.0.1
[superadmin] => 1
)

用其它用户登陆也是这样

Array
(
[verify] => c9f0f895fb98ab9159f51fd0297e236d
[uid] => 4
[username] => lisi
[logintime] => 2015-05-15 16:51:48
[loginip] => 127.0.0.1
[superadmin] => 1
)



明显RBAC::saveAccessList(); 这个没有读出来。

上面34行 session(C('ADMIN_AUTH_KEY'), true); 整行注释掉后出现

Array
(
[verify] => 8f14e45fceea167a5a36dedd4bea2543
[uid] => 1
[username] => admin
[logintime] => 2015-05-15 16:41:44
[loginip] => 127.0.0.1
[_ACCESS_LIST] => Array
(
)


)

再用它用户登陆


Array
(
[verify] => 8f14e45fceea167a5a36dedd4bea2543
[uid] => 2
[username] => zhangsan
[logintime] => 2015-05-15 16:18:23
[loginip] => 127.0.0.1
[_ACCESS_LIST] => Array
(
[ADMIN] => Array
(
[MSGMANAGER] => Array
(
[INDEX] => 6
[DELETE] => 7
)

[RBAC] => Array
(
[INDEX] => 8
[ROLE] => 9
[NODE] => 10
[ADDUSER] => 11
[ADDROLE] => 12
[ADDNODE] => 13
)

)

)

)



问题是:session(C('ADMIN_AUTH_KEY'), true); 这句话怎么会影响
import('ORG.Util.RBAC');
RBAC::saveAccessList();








最佳答案
评论( 相关
后面还有条评论,点击查看>>