在Asp.NetMVC 3中,什么构成AuthorizeAttribute的已验证用户
本文关键字:AuthorizeAttribute 用户 验证 什么 NetMVC Asp | 更新日期: 2023-09-27 18:27:42
我发现Asp.Net中的许多东西都是基于假定的知识。例如,我对互联网身份验证不太了解,很难在初级水平上找到任何关于它的信息。
有一件事让我感到困惑,那就是AuthorizeAttribute。我知道如何使用它以及它应该做什么,但我想知道它是否能在您有自定义登录系统的情况下工作。
在AuthorizeAttribute页面的描述中,它简单地说When you mark an action method with AuthorizeAttribute, access to that action method is restricted to users who are both authenticated and authorized.
那么,什么是经过身份验证的用户,如何将一个用户设置为经过身份验证。如果我创建自己的登录系统,我该如何设置,以便登录的用户能够通过AuthorizeAttribute进行足够的身份验证,从而允许他进入?
它检查IPrincipal的IIdentity的IsAuthorized。
在Global.asax中添加一个方法来处理"AuthorizeRequest"。然后在该方法中,做任何你需要检查用户是否被授权的事情(检查会话、cookie、数据库等)
然后将HttpContext.Current.User设置为GenericPrincipal,该用户具有实现IIdentity的用户,并且其IsAuthorized设置为true。
类似这样的东西:
public class MvcApplication : HttpApplication
{
public MvcApplication()
{
this.AuthorizeRequest += this.AuthorizedRequestEvent;
}
private void AuthorizedRequestEvent(object sender, System.EventArgs e)
{
// do checking here with what ever you want
bool isAuthenicated = false;
// change this what what ever implements IIdentity
var user = new User();
user.IsAuthenticated = isAuthenicated ;
GenericPrincipal principal;
principal = new GenericPrincipal(user, new string[] { });
HttpContext.Current.User = principal;
}
}
HttpContext.Current.User
包含当前登录用户的User
对象。而在CCD_ 4内部,这也可以从简单的CCD_。
如果你需要初级知识,那么你需要去买一本好书。Amazon.com上的快速搜索显示了对Pro ASP.NET MVC 3 Framework的大量支持,因此这可能是一个很好的起点。像这样一本书的价值在于,它将带你了解构建网络应用程序(包括身份验证)的前后示例。
至于安全。。你不想建立自己的。。尤其是如果你是初学者。很容易出错并以一团乱麻告终(曾经……那样做过)。您要做的是使用内置的身份验证。同样,一本书将是一个很好的起点,但在其他方面,从内置模板开始,并遵循本演练。完成后,开始阅读代码并使用类名作为谷歌搜索点。
您缺乏关于ASP.NET管道如何工作的基本知识。
http://msdn.microsoft.com/en-us/library/bb470252.aspx
特别是早期的AuthenticateRequest
事件,其中插入的模块可能会设置用户进行身份验证。他们是怎么做到的?通过将当前HttpContext
的User
设置为null
以外的值,其中Identity.IsAuthenticated
的求值结果为true
。
由于上下文的User
属性不绑定到任何特定类型(相反,它可以是其类型继承自IPrincipal
的任何值)任何身份验证提供程序都是可能的。
最后一件事——很多人坚持使用表单身份验证模块,从cookie中检索信息。