关于对四个表的写入和读取,大家可以找下视频,这里就不介绍如何配置节点和角色了,只说一下我在配置rbac配置文件时候遇到的问题。
其实很简单,至少比视频教程上的简单
首先确保你的四个表都已经导入,并且已经有了节点、角色和用户数据。
有的帖子说有5个表,还有一个用户表,其实这个会员表不需要写,我遇到的问题是按着教程做没有seesion数据,其实saveAccessList()是需要参数的,而且USER_AUTH_TYPE不能为2,填1就可以。
3.2.2和3.1.3有不一样的地方是引入文件
3.1.3是import('@.ORG.Util.RBAC');
3.2.2在头部引用即可 use Org\Util\Rbac;
判断登录,登录成功代码后面加入 Rbac::saveAccessList(会员ID);加在跳转之前,别忘记传参会员ID。
配置文件如下
'USER_AUTH_ON' => true,
'USER_AUTH_TYPE' => 1, // 默认认证类型 1 登录认证 2 实时认证
'USER_AUTH_KEY' => 'authId', // 用户认证SESSION标记
'USER_AUTH_GATEWAY' => '/Public/error',// 没有权限进入的页面
'NOT_AUTH_MODULE' => 'Index', // 默认无需认证模块
'REQUIRE_AUTH_MODULE' => '', // 默认需要认证模块
'NOT_AUTH_ACTION' => '', // 默认无需认证操作
'REQUIRE_AUTH_ACTION' => '', // 默认需要认证操作
'GUEST_AUTH_ON' => false, // 是否开启游客授权访问
'GUEST_AUTH_ID' => 0, // 游客的用户ID
'RBAC_ROLE_TABLE' => 'tp_role',
'RBAC_USER_TABLE' => 'tp_role_user',
'RBAC_ACCESS_TABLE' => 'tp_access',
'RBAC_NODE_TABLE' => 'tp_node',配置我只用到上面这些,其它的都没用到,判断权限代码我用的是官方提供的,加在了公用配置文件中,记得头部引入类文件,因为管理员我是用ID判断的,所有代码如下public function _initialize(){
if(判断登录状态,如果不是跳转)){
$this->redirect("Login/index");
}elseif(会员ID<>1){
//如果不是超级管理员就进行权限验证
if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
if (!RBAC::AccessDecision()) {
//检查认证识别号
if (!$_SESSION [C('USER_AUTH_KEY')]) {
//跳转到认证网关
redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
}
// 没有权限 抛出错误
if (C('RBAC_ERROR_PAGE')) {
// 定义权限错误页面
redirect(C('RBAC_ERROR_PAGE'));
} else {
if (C('GUEST_AUTH_ON')) {
$this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
}
// 提示错误信息
$this->error(L('_VALID_ACCESS_'));
}
}
}
}
}如果帮到你了,记得给个好评!!! 最佳答案