美食
如何使用 Forms 身份验证创建 GenericPrincipal 对象
2023-05-30 10:00  浏览:55

  创建一个 Web 应用程序,由它使用 Forms 身份验证并用经过身份验证的用户的标识和角色填充

  如果您使用的自定义身份验证机制不以 Windows 帐户为基础,那么要在 Web 应用程序中使用基于角色的安全性,您必须直接负责创建 ASP.NET 身份验证票和配置IPrincipal实例。这些身份验证票代表经过身份验证的用户的标识和角色。

  本模块描述了如何创建一个使用 Forms 身份验证对用户进行身份验证的 Web 应用程序,以及如何创建一个包含用户和角色信息的身份验证票。它还说明了如何将此信息映射到GenericPrincipal和FormsIdentity对象,以便使这些对象可用于应用程序内的授权逻辑。

  根据从数据存储中检索到的值创建GenericPrincipal和FormsIdentity对象。这些对象可能包含用户的角色成员关系详细信息。

  本模块描述了如何创建一个基于 Forms 的 Web 应用程序,此程序对用户进行身份验证并创建一个包含用户和角色信息的自定义 Forms 身份验证票。它还说明了如何将此信息映射到GenericPrincipal和FormsIdentity对象,并将新对象与 HTTP Web 请求上下文关联起来,以便使这些对象可用于应用程序内的授权逻辑。

  此过程创建一个新的 ASP.NET Web 应用程序。此应用程序将包含两个页;一个是只允许经过身份验证的用户访问的默认页,另一个是用于收集用户凭据的登录页。

  身份认证代码通常涉及到根据自定义数据库或 Active Directory 查找所提供的用户名和密码。

  打开 Logon.aspx.cs 文件并将下列using语句添加到位于文件顶部的现有using语句下:

  将下列私有 Helper 方法添加到名为IsAuthenticated的 WebForm1 类中,此类用于验证用户名和密码来对用户进行身份验证。此代码假定所有用户名和密码组合都是有效的。

  添加下列名为GetRoles的私有 Helper 方法,此方法用于获得用户所属的角色的集合。

  添加一个对IsAuthenticated方法的调用,提供通过登录窗体捕获的用户名和密码。将返回值赋给一个bool类型的变量,此变量指出用户是否已经过身份验证。

  创建一个包含用户名、截止时间和用户所属的角色列表的新窗体身份验证票。注意,身份验证票的用户数据属性用于存储用户的角色列表。还要注意,虽然票 /cookie 是否是永久性的取决于您采用的应用程序方案,但下列代码会创建一个非永久性票。

  此过程实现了一个应用程序身份验证事件处理程序,并根据身份验证票中包含的信息构造了GenericPrincipal和FormsIdentity对象。

  添加下列代码来创建一个FormsIdentity对象和一个GenericPrincipal对象。前一个对象从票名称获得用户名,后一个对象将此标识与用户角色列表包含在一起。

  此过程将代码添加到 default.aspx 页以显示已附加到当前HttpContext对象的GenericPrincipal对象中的信息,目的是确认此对象是否已正确构造且分配给当前的 Web 请求。然后,可以生成并测试此应用程序。

  返回到页加载事件处理程序并添加下列代码,以显示附加到与当前 Web 请求关联的GenericPrincipal的标识名称。

  按Ctrl+F5运行此应用程序。由于 default.aspx 被配置为启动页,所以这是最初请求的页。

  当您被重定向到登录页时(因为最初您没有身份验证票),输入用户名和密码(可随意输入),然后单击Logon。

  //--

  //--

  lilian :非常棒的插件!要是能将自定义字段的外链也能转成内链就更好了,很多人需要这个功能啊,等大神加入啊!

  千杯 :真是充满了岁月痕迹的博客啊……是什么让你这一年里变化这么大,简直是质变啊,量的积累肯定也有吧

  千杯 :难得一见做这么久个人博客的人了,膜拜一下,我的域名也快10年了,然而用的时间并不多,相比之下比较惭愧

Tags:seo

以上就是如何使用 Forms 身份验证创建 GenericPrincipal 对象的全部内容了,希望大家喜欢。

发表评论
0评