在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进行足够的身份验证,从而允许他进入?

在Asp.NetMVC 3中,什么构成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事件,其中插入的模块可能会设置用户进行身份验证。他们是怎么做到的?通过将当前HttpContextUser设置为null以外的值,其中Identity.IsAuthenticated的求值结果为true

由于上下文的User属性不绑定到任何特定类型(相反,它可以是其类型继承自IPrincipal的任何值)任何身份验证提供程序都是可能的。

最后一件事——很多人坚持使用表单身份验证模块,从cookie中检索信息。

相关文章:
  • 没有找到相关文章