MembershipUser与IPrincipal对象之间的关系

Sou*_*ceC 8 asp.net authentication forms-authentication asp.net-membership

我假设MembershipUser对象和实现IPrincipal接口的对象在某种意义上"连接",即当其中一个对象中的某些信息发生变化时,另一个对象也会相应地更改?

mat*_*dev 4

不确定我是否理解你的问题,但我相信你的假设是不正确的。

System.Web.Security 使用 MembershipUser 通过您在 Web 配置中设置的 MembershipProvider 对用户进行身份验证。你打电话时...

MembershipUser user = Membership.GetUser(username);
Run Code Online (Sandbox Code Playgroud)

您的会员资格提供商将查询您保存用户信息的数据存储(Sql 数据库、Active Directory 等),并返回为该用户名存储的 Memberhsip 数据。

如果您在应用程序中定义了另一个实现 IPrincipal 接口的类,并且已实例化该类型的对象,则这并不一定意味着您的 MembershipUser 对象和自定义对象共享数据(当然,除非您以编程方式分配了引用)

也许如果您提供一个代码示例,它会有助于澄清

  • Asp.net 上下文中的 IPrincipal (HttpContext.User) 是机器上运行当前进程的用户。MembershipUser 是您存储在数据存储中某处的应用程序用户。在授权期间,您可以通过将 MembershipUser 中的值分配到 FormsAuthentication 票证中来设置 HttpContext.User,但您引用的两个对象永远不会自动同步。 (3认同)
  • 抱歉,我完全没有问出我的问题。出于某种原因,我认为 IPrincipal ( HttpContext.User ) 与 MembershipUser 有更多共同的属性,但实际上只有 MembershipUser 与 HttpContext.User 共享的属性才是 IIdentity 中定义的三个属性!我真的很感谢你的帮助和耐心 (2认同)