页面验证的问题

joelbh 2004-03-17 10:05:56
通常一个web程序会有很多页面,某个页面只能由拥有某个权限的人访问,我的系统分三个角色,每种角色访问的页面有些不相同(例如管理员可以访问所有的页面,而编辑员访问的页面就少很多),怎么样用最简单的方法来控制页面的访问权限呢?用菜单的话如果知道路径的话那编辑员也可以访问只能由管理员访问的页面了,以前asp中是采用include一个通过判断session值不同来控制,asp.net中怎么做呢?
...全文
52 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
俞庆平 2004-03-17
  • 打赏
  • 举报
回复
其他的做法我还不太清楚。
俞庆平 2004-03-17
  • 打赏
  • 举报
回复
我是这么做的。首先将每个页面的相对路径存放在数据库中,登录时根据角色不同取得不同的页面,这些登录时取得的页面表示用户可以访问。
每个页面都有验证代码,代码是集中写的。
public static bool CanUse(System.Web.UI.Page thisPage)
{
if(thisPage.IsPostBack == true) return true;
SystemPages sps = (SystemPages)System.Web.HttpContext.Current.Session["UserPages"];
if(sps == null) return false;
;
string myString = "";

string pageUrl = System.Web.HttpContext.Current.Server.UrlDecode(thisPage.Request.Url.AbsolutePath.ToString()).ToUpper().Trim();

for(int i = 0; i < sps.Pages.Count; i++)
{
myString = ((SystemManage.PageManage.SystemPage)(sps.Pages[i])).RelativePath;
if(myString.ToUpper().Trim() == pageUrl)
return true;
}
thisPage.Response.Redirect("Error.aspx?ErrorName=NoPrivilegeToAccess",true);
return false;
}
上面的代码是验证代码,
在每个页面的Page_Load中加上
if(Privilege.CanUse(Page)==false) return;
即可达到你所要的效果,不过必须声明的是,这种做法效果明显,控制起来也能随心所欲,但要准备的工作比较多,
一是页面的增加到数据库,你需要通过算法遍历树结构,以免增加的页面路径和系统获取的不一样。我是就遍历实现的。
二是需要提供用户和页面的直接或间接的关系的维护功能。
joelbh 2004-03-17
  • 打赏
  • 举报
回复
aspritionisdead(听风的声音):
一,每个页面加入验证的代码太麻烦了,把验证代码写到一个页面基类里面我也知道有这种方法,但不太会用,能否提供一些例子,谢谢先了
二,在web.config 文件设置只能设置固定的用户的吧,一般系统的用户都是可以增加的啊。
aspritionisdead 2004-03-17
  • 打赏
  • 举报
回复
我采用下面两种方法之一:
一、在每个页面中加入验证的代码;采用这种方法如果怕麻烦的话,可以把验证代码写到一个页面基类里面,然后需要验证的页面都重这个基类继承。
二、在Web.Config文件中设置对身份验证策略(authentication)和授权(authorization)进行设置。
srz007 2004-03-17
  • 打赏
  • 举报
回复
数据库中增加一个字段为每个帐号分别设置不同的权限,比如高级管理员是“1,2,3”,普通管理员是“1,2”,一般人员是“1”,在每个需权限读取的页面顶部都从数据库中读一下该用户的权限并和这个页面需要的权限(这个权限是写在页面中的,比如权限是1,2则普通的不能读,而高级的能读)相对比,有权限则读取,无权限则离开本页
bomb_boy 2004-03-17
  • 打赏
  • 举报
回复
asp.net中还不是可以一样
在PAGE_LOAD里加入验证条件,一样的道理
aspritionisdead 2004-03-17
  • 打赏
  • 举报
回复
写个基类,这个基类从System.Web.UI.Page继承。
然后你的页面都从这个基类继承。
在基类的初始化代码里面完成验证:
根据页面的ID和当然用户的ID判断时候有使用权限。

62,046

社区成员

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

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

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

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