三个元素
用户:(user)登录系统的用户
角色:(role)用户的分类,有的时候也可以成为用户组
功能(action):可以做的操作,具体的来说,可以是我们web系统中的某一个请求
三者之间的关系
用户和角色:多对多关系,一个用户可能有多个角色,一个角色也可以赋予多个用户
角色和功能:多对多关系,一个角色拥有多个功能,一个功能可能被多个角色使用。
设计数据库表
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'))
);