Asp.net的登录验证方法Web.config访问权限配置

一开始看到有人写FormsAuthentication,FORM验证。我就不太明白。因为我把验证和授权搞混了。

他们在做的时候System.Security.Principal.IIdentity 用来授权做当前用户的标识对象。

我把他们混为一起了。很难去区分。

现在明白点了。 FORM验证就是WEB.config 设置

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name=".ASPXAUTH"></forms>

</authentication>

然后 再 放入

   FormsAuthentication.SetAuthCookie(username, false);//创建用户标识,不跨浏览器操作

用的时候从取出来Username就可以了。

Context.User.Identity.Name.ToString();

 当使用其中的一种来验证当前用户并通过时,必然要在服务器及客户端之间保存一种“验证票据”来保存验证信息。.NET提供类似于IIdentity的接口来完成该功能。请注意,context.user是IPrincipal(用户对象)类型接口,而identity是IIdentity(标志对象)类型的接口。

有四种类FormsIdentity GenericIdentity PassportIdentity WindowsIdentity实现了IIdentity接口。这几种类对应于.NET的几种验证模式。以上也差不多是废话,只是说了一下。 不过,请楼主看一下以上说的, 再对MSDN里查找一下ASP.NET的Forms验证的文章。看一下在forms验证时对FormsIdentity类的使用,有些信息保存到FormsIdentity类的实例里,在使用的时候就可以context.user.identity.name提取出来。

 你可以用自己的类放到user.Identity中。Context.User.Identity.Name的意思是当前用户的名字。可以放你任何想要的东西。不过放的时候要注意,可以用一下代码: 

  HttpContext.Current.User   =  new   GenericPrincipal(object,  “”);  

  object是你自己定义的类。

——————————————————————————

System.Security.Principal 命名空间

IPrincipal 定义用户对象的基本功能。

用户对象表示用户的安全上下文,代码当前即以该用户的名义运行,包括用户的标识(IIdentity)和它们所属的任何角色。

所有用户对象都需要实现 IPrincipal 接口。

IIdentity 定义标识对象的基本功能。

创建 GenericPrincipal 对象

  1. 创建标识类的一个新实例,并用希望它持有的名称对其进行初始化。以下代码创建一个新的 GenericIdentity 对象,并用名称 MyUser 对其进行初始化。

    Visual Basic 复制代码
    Dim MyIdentity As New GenericIdentity("MyUser")
    C# 复制代码
    GenericIdentity MyIdentity = new GenericIdentity("MyUser");
  2. 创建 GenericPrincipal 类的一个新实例,并用先前创建的 GenericIdentity 对象和表示希望与此主体关联的角色的字符串数组对其进行初始化。下面的代码示例指定表示一个管理员角色和一个用户角色的字符串数组。然后用前面的 GenericIdentity 和该字符串数组对 GenericPrincipal 进行初始化。

    Visual Basic 复制代码
    Dim MyStringArray As String() = {"Manager", "Teller"}
    DIm MyPrincipal As New GenericPrincipal(MyIdentity, MyStringArray)
    C# 复制代码
    String[] MyStringArray = {"Manager", "Teller"};
    GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray);
  3. 使用以下代码将主体附加到当前线程中。这在以下几种情形中很有用:必须对主体进行多次验证,必须通过应用程序中运行的其他代码对主体进行验证,或必须由 PrincipalPermission 对象对主题进行验证。不将主体附加到线程中,仍可对主体对象执行基于角色的验证。有关更多信息,请参见替换主体对象

    Visual Basic 复制代码
     
    C# 复制代码
    Thread.CurrentPrincipal = MyPrincipal


 

原文地址:https://www.cnblogs.com/mahaisong/p/2064075.html