柚子快报激活码778899分享:ThinkPHP的RBAC

http://yzkb.51969.com/

基于角色的访问控制(Role-Based Access Control)

在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。

ThinkPHP通过5张表实现权限控制

  think_user (用户表)

  think_role (用户分组表)

  think_node (操作节点)

  think_role_user (用户和用户分组的对应)

  think_access (各个操作和用户组的对应)

认证过程

1.判断当前模块的当前操作是否需要认证

2.如果需要认证并且尚未登录,跳到认证网关,如果已经登录 执行5

3.通过委托认证进行用户身份认证

4.获取用户的决策访问列表

5.判断当前用户是否具有访问权限

 

配置config文件

array(

'APP_AUTOLOAD_PATH'=>'@.TagLib',

'SESSION_AUTO_START'     =>true,

'USER_AUTH_ON' =>true,

'USER_AUTH_TYPE' =>1, // 默认认证类型 1 登录认证 2 实时认证

'USER_AUTH_KEY' =>'authId', // 用户认证SESSION标记

'ADMIN_AUTH_KEY' =>'administrator',

'USER_AUTH_MODEL' =>'User', // 默认验证数据表模型

'AUTH_PWD_ENCODER' =>'md5', // 用户认证密码加密方式

'USER_AUTH_GATEWAY' =>'/Public/login',// 默认认证网关

'NOT_AUTH_MODULE' =>'Public', // 默认无需认证模块

'REQUIRE_AUTH_MODULE' =>'', // 默认需要认证模块

'NOT_AUTH_ACTION' =>'', // 默认无需认证操作

'REQUIRE_AUTH_ACTION' =>'', // 默认需要认证操作

'GUEST_AUTH_ON' =>false, // 是否开启游客授权访问

'GUEST_AUTH_ID' =>0, // 游客的用户ID

'DB_LIKE_FIELDS' =>'title|remark',

'RBAC_ROLE_TABLE' =>'think_role',

'RBAC_USER_TABLE' =>'think_role_user',

'RBAC_ACCESS_TABLE' =>'think_access',

'RBAC_NODE_TABLE' =>'think_node',

'SHOW_PAGE_TRACE'       =>1 //显示调试信息

);

  注:

    Public模块是无需认证的

    默认网关地址就是认证失败,没有权限跳转到此处,重新登陆

    ADMIN_AUTH_KEY表示超级管理员权限,不用分配权限,它什么权限都有

重要的方法:

  authenticate($map,$model=”)  传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息

  saveAccessList($authId=null)  传入用户的ID,无返回值,只是设置 $_SESSION[‘_ACCESS_LIST’]的值

  checkAccess()  检测当前模块和操作是否需要验证

  checkLogin()   检测登录

  AccessDecision($appName=APP_NAME)  检测当前项目模块操作 是否在$_SESSION[‘_ACCESS_LIST’]数组中

        $_SESSION[‘_ACCESS_LIST’][‘当前操作’][‘当前模块’][‘当前操作’]是否存在,存在,表示有权限

  getAccessList($authId)  通过查询数据库 返回权限列表,$_SESSION[‘_ACCESS_LIST’]的值

 

柚子快报激活码778899分享:ThinkPHP的RBAC

http://yzkb.51969.com/

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。