基于角色的权限访问控制

三个元素

用户:(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'))

);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值