web用户权限控制


功能需求:web项目用户权限问题,不同用户拥有不同权限。用户不能越权访问资源须要验证用户权限。
用户每一次访问都必须验证用户此次请求的URL地址与用户所拥有权限的URL地址是否一致,验证时就须要查询数据库。当数据访问频繁或访问量
比较大时增加了数据库的压力。界面反应较慢,用户体验差。以下为解决方案:
    将项目所以URL地址映射为一个int值,此值为权限值。将多个URL地址映射的权限值通过(2^n+2^m)式运算组成角色。再将角色赋与用户。
    例:
        url请求地址                                   权限值
        url :http://rowsTest/add**.action             authorityValue: 1
        url :http://rowsTest/del**.action             authorityValue: 2
        
        role权限和
        roleAuthorityValue: 2^1+2^2 =  6    此角色可访问以上两个URL地址
        
        userAuthority: 6                    此用户拥有此角色可访问以上两个URL地址
        
        
        当用户登陆时将用户的角色值放到session。每一个求地址后传本请求地址权限值(url?authorityValue=1)
        验证用户是否拥有访问http://rowsTest/add**.actionURL地址的权限。
        (userAuthority & ((int)Math.pow(2, 1))) == ((int)Math.pow(2, 1)) ? true:false   
        如何返回true通过否则绝决访问。
    
    
    优点:位运算速度快,资源消耗少,用户UI反应快。用户体验好。用户可根据功能自定义角色。
    缺点:多个开发人员自定义权限值可能重复。数据库必须有功能对应的URL地址表与角色表。有一定的依赖关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值