sco*_*ttm 5 membership asp.net-mvc
我想使用AuthorizeAttribute来控制允许哪些用户访问我的操作.我只是想澄清我的逻辑是有序的.
事物的正常流动是什么?我知道我可以继承MembershipProvider,但我不需要那里的所有功能,实际上只能用两个不同的角色登录.
您必须将 IPrincipal 存储在某处,并在每次请求时恢复它。如果您使用 FormsAuthentication,这是一个很好的解决方案:
ASP.NET 2.0 Forms 身份验证 - 保持自定义但简单
您可以在这里找到其他解决方案:
使用表单身份验证在 ASP.NET MVC 上的何处存储已记录的用户信息?
可能在许多其他 StackOverflow 问题中:)
编辑
关于 MyBusinessLayerSecurityClass.CreatePrincipal(id, id.Name):
您应该阅读此页面:
http://msdn.microsoft.com/en-us/library/aa480476.aspx
特别是这个:
FormsAuthenticationModule 类构造一个 GenericPrincipal对象 并将其存储在 HTTP 上下文中。GenericPrincipal对象 保存对 表示当前经过身份验证的用户的FormsIdentity实例的引用。您应该允许表单身份验证来为您管理这些任务。如果您的应用程序有特定要求,例如将User属性设置为实现IPrincipal接口 的自定义类 ,则您的应用程序应处理 PostAuthenticate 事件。PostAuthenticate 事件在FormsAuthenticationModule 验证表单身份验证 cookie 并创建 GenericPrincipal和FormsIdentity 对象 后发生 。在此代码中,您可以构造一个 包装 FormsIdentity对象的自定义IPrincipal对象,然后将其存储在 HttpContext 中。用户财产。
设置身份验证 cookie 后,FormsIdentity 会自动管理。您所要做的就是将其包装在您的 IPrincipal 中。当 HttpContext.Current.User 属性不为 null(它是 GenericPrincipal,您不久后将其替换)时,所有这些都会发生。当 HttpContext.Current.User 为 null 时,则之前没有创建身份验证 cookie,并且用户未经过身份验证。
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |