当前位置:编程学习 > C#/ASP.NET >>

角色权限控制问题?难啊!


数据库有四个表(最基础的)
User表:
UserID Int PrimaryKey
UserName Varchar(50)
RoleID Int

Role表:
RoleID Int PrimaryKey
RoleName Varchar(50)

Access表:
AccessID Int PrimaryKey
AccessName Varchar(50)
AccessUrl Varchar(200)

RoleAccess表:(给角色赋权限,一对多的关系)
[ID] Int PrimaryKey
RoleID Int
Access Int

我现在问大家,
在前台控制会员的访问的权限,
怎么处理呢?
1.还是每访问一个页面读一次数据库来比较RoleAccess表,看这个有没有访问这个页面的权限,
2.还是把这个用户对应的角色的权限列表读出来,
那么读出来有放在什么地方呢? 缓存/或者什么地方?
3.还是有其他的方法?
希望大家回帖给予指点?
--------------------编程问答-------------------- 没有深入学习过,帮你顶 --------------------编程问答-------------------- 你可以把页面所需要的权限存起来。

然后再比较。 --------------------编程问答-------------------- C/S 设计一个用户信息的类。。userinfo.cs  里面包括用户名、密码、地址、电话及数据权限(DataTable)和功能权限(DataTable)。而每个窗口打开的时候,将userifo对象传入并进行权限角色的相关判断。

B/S 可以考虑放到Session和Cookies里面 --------------------编程问答-------------------- Access Int
如果内容不多的情况下。
页面类型1  页面类型2  页面类型3
001       010        100
个易做图限
管理 111
员工  011
其他  101
某人具有 员工和其他 则是 101 | 011=111
字符串或者数字均可。或者直接存储为结构体。
如果分的比较细,可以把int直接转成2进制。
数据可以转换为数组 bool [] 权限。
然后做 与 运算。

如果需要读入页面3,查询对应 权限[i];

好似asp.net给的权限足够用了。为什么还有自己设计? --------------------编程问答-------------------- 如果严格的话,用1
一般来说,可用2 --------------------编程问答-------------------- 我一般是用你说的第一种方法! --------------------编程问答-------------------- 我User表里的ROLEID是用逗号隔开的,然后存到SESSION里,再每个页面放个函数把每页对应的功能号传进去,通过数据库找出ROLEID对应的功能号看是否包含这个页的功能号。 --------------------编程问答-------------------- 我一般用1
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,