1、RBAC:roased acs control:基于角色的权限管理。权限管理的设计:权限管理:把权限和控制器或者方法关联如添加商品类型:Type/add角色管理:创建角色时会分配权限管理员权限的分配:可以设置管理员所在的角色实际验证:1.当管理员登录时角色权限表设计,直接取出这个管理所有的权限并保存到 ses列表以及方法列表)中(ses中的就是这个管理员可以控制器2.在父控制器的构造构造函数中3D场景,取出将要需要在父控制器中写一段就可以实现整个的控制器以及方法,然后判断是否有这个权限,所以权限验证只的验证,不用每个方法中再单独验证。3.左侧的按钮是动态生成的,这个管理员有哪些权限就列出哪些按钮注意:只靠按钮是控制
2、不了权限的,因为即使没有按钮,用户也可以直接在浏览器里打地址。所以需要在任何一个控制器中的方法之前验证。实际操作:建表新建两个表b. 修改管理员表添加一个角色 id2.使用代码生成 privilege(权限表)的代码并在左侧添限管理”的按钮:权限管理完成,不用修改代码。3.使用代码生成 role 角色表的代码,并在左侧添加角色管理的按钮4.修改角色的模型,重写 delete 方法,不允许修改 id=1 的超级管理员的角色5.修改角色的模型,重写 add,和 save 方法:因为提交上来的权限是一个数组,需要把数组转化成一个字符串,而且如果是超级管理员就不允许修改6.修改角色模型添加表单验证的规
3、则,因为 TP 中不能验证数组是否为空3D道具,而权限这里提交上来的就是一个数组,所以需要使用callback 方式的验证来自己写方法验证:7.修改角色控制器中的 add 方法:显示表单之前取出所有的权限,添加角色时要选择权限8.修改 View/Role/add.html 表单把权限改成 checkbox 复选框效果:9.修改角色修改的控制器在显示表单前取出所有的权限:10. 修改 View/Role/save.html 表单把权限改成checkbox 复选框11. 在角色列表页中需要根据角色的 ID 取出角色的名称修改角色模型中的 search 方法角色权限表设计,连表查询取出权限名称对应的 SQL 语句:SELECT a.*,IFNULL(GROUP_CONCAT(b.pri_name),所有权限)pri_names FROM sh_role aLEFT JOIN sh_privilege b ON FIND_IN_SET(b.id,a.privilege_id) WHERE 1GROUP BY a.id完成!