基于角色的权限访问控制

三个元素

用户:(user)登录系统的用户

角色:(role)用户的分类,有的时候也可以成为用户组

功能(action):可以做的操作,具体的来说,可以是我们web系统中的某一个请求

三者之间的关系

用户和角色:多对多关系,一个用户可能有多个角色,一个角色也可以赋予多个用户

角色和功能:多对多关系,一个角色拥有多个功能,一个功能可能被多个角色使用。

设计数据库表

user_tab:u_id,u_name,u_pass                                                                                                                                                                                                                                                                                                                                                                      
基于角色的权限访问控制

role_tab:r_id,r_name

基于角色的权限访问控制

action_tab:a_id,a_name,url

基于角色的权限访问控制

user_role:u_id,r_id

基于角色的权限访问控制

role_action:r_id,a_id

基于角色的权限访问控制

编写sql语句:用户登录之后,所拥有的权限

--找到登录用户的id

select u.U_ID from USER_TAB u

where u.U_NAME='Lee' and u.U_PASS='123';

 

--根据用户id,找到其对应的角色

SELECT UR.R_ID from USER_ROLE ur

where UR.U_ID=(select u.U_ID from USER_TAB u

where u.U_NAME='zhangsan' and u.U_PASS='123');

 

--根据角色id,找到对应的功能id

select * from ROLE_ACTION ra

where RA.R_ID in(SELECT UR.R_ID from USER_ROLE ur

where UR.U_ID=(select u.U_ID from USER_TAB u

where u.U_NAME='Lee' and u.U_PASS='123'));

 

--根据功能id,找到功能信息

select * from ACTION_TAB a

where a.A_ID in(

select RA.A_ID from ROLE_ACTION ra

where RA.R_ID in(SELECT UR.R_ID from USER_ROLE ur

where UR.U_ID=(select u.U_ID from USER_TAB u

where u.U_NAME='admin' and u.U_PASS='123'))

);