权限设立

权限设置
今天粗略的学习了下。
权限表的设置
user,permission,role,user-role,role-permission。
要是业务需要可以增加一个group。
user表:存放用户
permission:权限,如增删查改等
role:角色,角色拥有功能
user-role:中间表,用于协调用户和角色。
role-permission:中间表,用于协调角色和权限
group:这个是用来关联多个角色的,比如说我们班只选了一个班长,
这个时候班长就有很多角色了,如班长,卫生管理,纪律管理等等角色。

详解
为什么要出现role这个表?
一般我们设置权限的时候,要设置user表和permission表。
这个时候就要一个role表了,为什么要role表了,
如果不使用role表,我们user表就要和permission表直接交互,
这样相当的麻烦,因为我要为每个user用户都关联权限,
user数据多的时候,想死的心都有了。
其实这期间存在很多相似的权限,就那学校来说吧,有老师、班长、学生。
这样我们只要定义一个role表,分出老师、班长、学生等角色。
user关联角色就可以解决问题了,就算我要改变班长的权限,
我只要改变角色就解决了,而不要为每个班长进行权限修改。
中间表的好处
   在数据中如果两个表是多对多的关系最好使用中间表来协调他们,

在使用权限的时候,我们使用的是权限框架,既然别人都写好了,自己就懒得动手了。
我们使用的是spring-security,其实它早前叫Acegi,是一个独立的框架,
Acegi内部从开始就使用到拦截器啊,AOP啊等等,它对spring也有一定依赖。
后来好像被spring收购了,所以就成了spring-security。

spring-security这个框架内存封装了很多功能,
比如登入、登出、cookie(甜心)技术实现的记住密码、自定义标签库等等
它内部很多东西都是约定大于配置,jsp页面一些属性都是定死了的。
这个看它的源码的时候就看到了,
比如from表单提交的action,一定要写成 路径/j_spring_security_check,
就算错一个字母都是不行的。属性也是一样的。
其实说成这样,看了看也不是很难。
自定义标签库是用来限制权限的,在用户登录的时候,
spring-security会那到权限,自定义标签就会判断了。
待续...