基于数据库的菜单权限控制

   web项目的安全问题越来越受到重视,我们知道web项目中常见攻击漏洞方式有:水平攻击,垂直攻击,我们都晓得水平攻击只需要利用session或者cookie加密userid,防止恶意篡改数据即可。接下来我们通过例子来设计基于数据库的菜单权限控制可以在一定程度上防止垂直攻击。

  我们都知道对于权限的控制如果粒度控制到增删改查的话,就过细节了,我们尽量控制在对于功能模块中,然后再细分增删改查。整个权限控制大致可以划分为5张表,部分表也可省略。

用户模块菜单模块资源模块


USER
USER_ID                                                               
USER_NAME                                                 
LOGIN_ID                                           USER_PASSWORD                                    
OTHER_MESS                                
用户ID姓名登陆账号密码其他信息

ROLE
ROLE_IDROLE_NAMEROLE_TYPE
角色ID角色名称角色类型
USER_ROLE
USER_IDROLE_ID
用户ID角色ID


MODULE
MODULE_ID                             MODULE_NAME                                 MODULE_CODE        PID                             INDEX                                     URL                            
ID模块名称模块英文名该模块父类ID菜单等级c操控资源地址


AUTHORIZATION
AUTHORIZATION_ID                  AUTHORIZATION_NAME                   AUTHORIZATION_CODE         MODULE_ID                           MODULE_URL                
ID权限名称权限英文名模块ID资源地址
ROLE_AUTHORIZATION
AUTHORIZATION_ID
ROLE_ID
权限ID角色ID

我们制作一个er图方便理解

各个表外键设计如上图示范。这里最主要的就是先取得用户的角色role_id判断他的身份然后和资源表连接从而判断他操控的资源模块。
sql脚本给出:
  select * from( select t2.role_id role_id,t2.name role_name, u.* from user_role t,role t2,user u where t.user_id=u.user_id and     t2.role_id=t.role_id)a
,(select r2.role_id,r.* from authorization r,role_authorization r2 where r.authorization_id=r2.authorization_id) b where a.role_id=b.role_id
这样可以查询每个用户所对应可操作权限的模块,在系统中可以通过登陆给定的信息判断资源,对不可操作菜单给予不显示。






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值