Joe*_*Joe 14 c# asp.net-mvc forms-authentication
我需要ASP.NET MVC应用程序中的一些功能,在做了一些研究后,我觉得我必须实现自定义MembershipUser,MembershipProvider,Identity和Principal.我的问题是:我不理解MembershipUser和Identity之间的关系(如果有的话)以及MembershipProvider和Principal究竟在哪里.请有人请说清楚.我在网上发表了几篇关于所有四个参与者的文章和教程,但没有一个完全解决它们之间的关系.
另外:除了在Global.asax中的AuthenticateRequest期间,是否有一种优雅的方式将自定义主体分配给Context.User?我已经看到很多关于如何在ASP.NET WebForms应用程序中执行此操作的示例,我想知道ASP.NET MVC是否有更好的方法.
Rus*_*Cam 27
an IPrincipal是为每个Web请求创建的安全上下文,包含与用户身份及其拥有的角色相关的信息.
一个IPrincipal包含IIdentity有一个Name,一个IsAuthenticated和AuthenticationType性能.
custom MembershipProvider是一个派生自抽象类的类,MembershipProvider用于提供有关使用您的应用程序的用户的自定义数据.提供程序将对MembershipUser类型进行操作,可用于为特定用户或用户获取数据,创建新用户等.您可以继承MembershipUser创建自己的用户类型,并且通常也可以在使用您自己的提供程序时执行此操作.
当你访问一个应用程序,IPrincipal并IIdentity创建和分配HttpContext.Current.User,并Thread.CurrentPrincipal提供可能的请求的生命周期过程中采取的任何行动的安全信息.
如果您正在使用a RoleProvider,则会RolePrincipal创建一个类型实例,该实例会挂钩到已配置RoleProvider的用户获取角色; 如果你没有使用a RoleProvider那么GenericPrincipal就创建了一个类型实例.
如果您正在使用表单身份验证并且用户已登录,则会FormsIdentity创建一个类型实例; 如果用户未经过身份验证,则会GenericIdentity创建一个类型实例.该IIdentity所创建的是最终将进入验证cookie回传给浏览器,哪些将被用于构建序列化FormsAuthenticationTicket和IIdentity对下一个请求.
将MembershipProvider通过提供有关用户的其他信息装配到这一点.静态Membership类的GetUser()方法将使用current IIdentity.Name和configure MembershipProvider来返回MembershipUser包含有关用户数据的实例(或者如果已定义的派生类).
由于ASP.NET MVC是在ASP.NET处理管道之上构建的,因此您需要设置自己的管道IIdentity并且IPrincipal是相同的.据我所知,MVC架构中没有更好的地方可以设置它们.
注意:这都来自内存.如果我有问题,请告诉我,我会更新.
| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |