额,RBAC,首先要了解一下RBAC的意思,即(Role-Based Access Control)基于角色的访问控制。
一般情况下,我们实现权限访问控制的基本思路是这样的:
1.user表(用户表)
2.role表(角色)
3.node表(操作应用表)【解释一下,在新闻发布页面中,对新闻的删除就是一个操作】
4.role_node (角色与操作关联表)【表内字段:id,role_id, node_id 】
5.role_user(用户与角色关联表)【表内字段一般为:id,role_id,node_id】
以上5张表,是我们的库表结构:
--------------------------------------------------------------------------------------------------
每当,我们访问某个页面的时候,先判断用户是否有无这样的权限,如果有,什么也不做;如果没有权限,提示用户缺少相应权限,跳转或者返回。
当我们访问页面的时候,首先必须经过一个过滤器或者Action,总之就是在页面展示之前的一个拦截功能的对象,在这个对象里,根据用户ID等信息,将该用户的权限信息从数据库内取出,进行判断。
一般情况下,每一个页面我们为之配置一个Action 或者拦截器类。为了避免重复性的工作,我们可以写一个父类包含这样一个公共的方法,让其他的Action类或者拦截器来继承父类。