我试图在我的ASP.NET MVC2应用程序中实现
Windows身份验证.
我遵循官方文件建议的所有步骤:
我遵循官方文件建议的所有步骤:
<authentication mode="Windows" /> <authorization> <deny users="?" /> </authorization>
我已经指定了NTLM身份验证.到现在为止还挺好.一切都很好
我想检查登录到我的数据库的用户.
我想从我的表中获取角色,然后使用自定义属性来管理授权.
我不想使用会员和角色提供者.
我已经有我的表用户/角色到位,因为他们已被用于互联网应用程序(这是内部网应用程序).
在我的互联网应用程序中,我有一个用户输入数据的表单.表单发布到控制器,该控制器检查所有内容,并与登录用户的用户(和角色)一起创建Cookie.
在我的global.asax中,我已经陷入了AuthenticateRequest事件,在那里我读取了cookie,并创建了一个自定义的主体,我使用全部的应用来检查授权.
如何使用Windows身份验证实现?
解决方法
只需创建一个新的主体并将其分配给Global.asax中的用户和线程(或使用操作过滤器).
protected void Application_AuthenticateRequest(object sender,EventArgs args) { if(HttpContext.Current != null) { String [] roles = GetRolesFromSomeDataTable(HttpContext.Current.User.Identity.Name); GenericPrincipal principal = new GenericPrincipal(HttpContext.Current.User.Identity,roles); Thread.CurrentPrincipal = HttpContext.Current.User = principal; } }
如果用户没有任何匹配的角色,则可以使用web.config authoirzation元素禁止应用使用它们:
<authorization> <allow roles="blah,whatever"/> <deny users="*"/> </authorization>
原文地址:https://www.jb51.cc/aspnet/249776.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。