页面级的权限控制讨论

SpringWang 2003-11-11 01:43:19

提出问题:当一个用户进入某个模块(具体可以是个页面),因为没有访问权限,系统给出通知,并禁止访问。

分析问题:系统分为几个不同独立的模块,登陆用户为某个角色,比如档案管理员,系统管理员等等,该用户只能对属于自己职责(也就是权限)范围的模块进行访问操作。
对于web系统,呈现在用户面前,不同模块通过菜单,树等等导航栏进行划分,用户进入某个模块首先应进行权限验证。权限验证应在模块的入口首次进行(其实每个模块中每个页面访问控件操作都要验证),模块的入口简单分为模块页面,导航控件。验证也可以分为客户端验证和服务器端验证。

来对服务器端验证讨论吧
我的想法是每个user进入某个page,都进入权限验证
validate(User t,Page p),验证通过才允许访问。
这就要求每个User有个许可Page列表或者是许可模块列表。可实现起来还是不知所错。

谁还有更好的办法,欢迎各位一起来个讨论!
...全文
369 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sun_comma 2010-06-18
  • 打赏
  • 举报
回复
都是空谈
xiaocaonet 2003-11-13
  • 打赏
  • 举报
回复
怎么没人提供点实际的示例啊!
SpringWang 2003-11-12
  • 打赏
  • 举报
回复
帮自己顶
SpringWang 2003-11-12
  • 打赏
  • 举报
回复
to henryfan1(每天好心情(*_*)) :
能否给一段代码演示


WUNEN 2003-11-12
  • 打赏
  • 举报
回复
把用户权限放入数据库表中(可用一串0、1来表示,你预先设定权值表中位与页面的对应关系),用户登录时就记下其权限字符串,当对应的页面的位值为有权时才可操做,另外在导航栏中最好不要对于该用户不能访问的页面跟本就不要显示出来
raymond323 2003-11-12
  • 打赏
  • 举报
回复
up
henryfan1 2003-11-12
  • 打赏
  • 举报
回复
把用户每个模块的权限一次过读取到哈希表中,访问页面时,读取对应键值的哈希表值。
gOODiDEA 2003-11-12
  • 打赏
  • 举报
回复
每个user进入某个page,都进入权限验证
validate(User t,Page p),验证通过才允许访问。
这就要求每个User有个许可Page列表或者是许可模块列表。可实现起来还是不知所错。
////////////////

一个表A保存模块信息,一个表B保存用户/角色对某个模块的权限

用户第一次登陆取得用户信息保存,对B进行查找取得它对每一个模块的权限,保存

进入模块的时候进行判断
FoxLinn 2003-11-12
  • 打赏
  • 举报
回复
我也帮你顶一下!

有同感。方法很多,但大多是理论上的,没有见过具体的例子。哪位可以提供一下?
xiaocaonet 2003-11-12
  • 打赏
  • 举报
回复
我帮你顶,我也为这个发愁呢?在网上有很多说到权限管理数据库的设计,但我有个问题,比如:
Roles_ID,SubSys_ID,Menu_ID,Command_ID
上面的Command_ID有何作用?应该改成页面的文件名才好判断啊!如果我要进DD.aspx这个页面,到底怎样根据数据库来决定授权呢?还有如果一个用户属于多个角色,怎样调出权限集合啊!
chegan 2003-11-11
  • 打赏
  • 举报
回复
补充一点,在数据库中存储这些信息,每次访问页面都要先访问数据库,势必影响效率,你可以把第一次读取的结果存在内存中,下次先从内存中读取,如果内存中没有再从数据库中读取,这样,只有第一次访问http://localhost/default.aspx?type=2&num=3才会从数据库中读取权限信息,下次访问http://localhost/default.aspx?type=2&num=3的时候就会从内存中判断了。
chegan 2003-11-11
  • 打赏
  • 举报
回复
对页面进行参数分析
比如:页面default.aspx
对这个页面的请求可能有以下几种
http get请求
http://localhost/default.aspx
http://localhost/default.aspx?type=2&num=3
等等

还有对default.aspx的post请求
对不同类型的请求都要在数据库中有一个对应项
在asp.net中,你需要些一个httpHander类来处理这样的请求,进行上面的参数分析,符合条件的就放行,不符合的就返回自定义页面
2002pine 2003-11-11
  • 打赏
  • 举报
回复
在你的要进行访问控制的页面的page_load中加入一个验证函数。对不要进行访问控制的页面就不要加。
8u9 2003-11-11
  • 打赏
  • 举报
回复
一个user进入一个page,应该要点击相应的按钮(链接)吧,我的做法是数据库里面有个表,对应的user和这个user可以访问的页面,页面的名字可以是按钮的id(这样方便记忆),bool GetPermission(string userid,string strbtnid)
当出现按钮点击事件时候,读数据库,有记录则返回true,没有则false,页面取得返回值,true则进行跳转,false则弹出alert。

有个问题,如果用户过多,反复读取数据库会不会有什么不良后果。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧