简单权限验证的方法

权限验证一直是各类大大小小的系统中核心的问题。如果一个系统权限验证都只有是否两类情况,不存在多值的情况,可以考虑用一个整数保存权限。

1。定义好各个功能在权限串中的位置,如 10001 的意义是
新增文章权限 1
修改文章权限 0
删除文章权限 0
搜索文章权限 0
发送短信权限 1

这里有一个限制,只能加,不能减少功能点,也就是在做设计时,必须仔细分析系统对应的功能点,并尽量细化,达到最小颗粒的状态。

2。以论坛为例,既有用户组权限也有版权限(栏目权限),也就是操作权限和数据权限的关系,一个用户真正的权限应该是这两组权限的交集,当然也有可能是权限优先级的问题,当各组权限出现冲突的时候,以某一组权限为标准。
得出权限交集的做法:
public static void Main()
{
int p1 = 1010;
int p2 = 0110;
//p3就是最终要保存下来的某个用户组在某个版的权限串
int p3 = MyClass.method1( p1,p2);

}
public static int method1(int p1, int p2)
{
int n1 = Convert.ToInt32(p1.ToString(), 2);
int n2 = Convert.ToInt32(p2.ToString(), 2);
int result = n1 & n2;
return Int32.Parse(Convert.ToString(result, 2));
}



3。保存权限串到Cache,系统运行时,从Cache中读取权限串进行权限验证。
如权限串10010,要判断是否有修改文章的权限,要判断权限串从左起第2位的值,
   int p1 = 10010;
    //1 有操作权限 0 无操作权限
   int r1 = int.parse( ((p1>>3)%2).ToString());


这样的做法,应该能使权限验证的代价减到最小,但不适用于有多值的权限,
特别谢谢csdn的 fancyf(凡瑞)




转载于:https://www.cnblogs.com/monthkey/archive/2005/06/01/166141.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值