当前位置:  开发笔记 > 后端 > 正文

使用Global.asax进行授权检查

如何解决《使用Global.asax进行授权检查》经验,为你挑选了1个好方法。

在我的ASP.NET Web应用程序中,如果用户存在于数据库中(我们第一次在会话中保存用户详细信息之后),我希望每次用户尝试从应用程序获取页面时进行检查.我尝试使用global.asax中的Application_AuthenticateRequest事件来检查每个请求,但此事件中不存在会话.我需要一个建议,我可以放置我的授权逻辑,我仍然可以使用会话数据(以减少数据库访问).



1> CraigTP..:

你听起来好像在"滚动自己的"身份验证系统.

我将研究使用ASP.NET内置的Forms身份验证系统,该系统通常与ASP.NET 成员资格提供程序一起使用.SQL Server已经存在内置提供程序,您可以通过继承System.Web.Security.MembershipProvider基类来创建自己的成员资格提供程序.

实际上,一旦客户端成功通过身份验证,ASP.NET成员资格提供程序通常会在客户端的浏览器中设置客户端cookie(也称为身份验证票证).每次后续页面请求都会将此cookie返回给Web服务器,从而允许ASP.NET以及您的代码确定用户是谁,通常只需要一行代码:

string username = HttpContext.Current.User.Identity.Name;
// The above gets the current user's name.

if(HttpContext.Current.User.Identity.IsAuthenticated)
// Do something when we know the user is authenticated.

然后,您不需要在Session状态中存储任何内容.当然,如果您将特定于用户的数据存储在会话变量中(即用户数据可能不是用户身份验证的一部分,也许是用户最喜欢的颜色等),那么无论如何都可以将其存储在会话变量(在用户首次通过身份验证后从数据库中检索它).会话变量可以基于用户的名称(假设唯一名称)进行存储,并使用类似于上面的代码进行检索,该代码获取当前用户的名称以访问正确的会话对象.

使用内置表单身份验证还允许您使用web.config中的简单声明性代码"保护"您网站的某些区域免受未授权用户的攻击,例如:


  

将上述内容添加到"主"web.config将确保未授权用户无法访问您的任何页面(尽管您实际上可能永远不会这样做 - 它只是作为示例).将ASP.NET 角色提供程序与成员资格提供程序结合使用,可以更加精确地了解谁可以访问或不能访问您网站的各个部分.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有