【问题标题】:How does IPrincipal gets its roles?IPrincipal 如何获得其角色?
【发布时间】:2010-05-23 22:32:33
【问题描述】:

我需要了解SiteMapProvider.IsAccessibleToUser() 的工作原理。

内置的XmlSiteMapProvider 调用HttpContext.User.IsInRole(),在表单身份验证的情况下使用System.Security.Principal.GenericPrincipal

当前用户从哪里获得其角色?哪个提供商加载此类信息?我想重载它并使用自定义逻辑。

【问题讨论】:

    标签: asp.net sitemapprovider iprincipal isinrole isaccessibletouser


    【解决方案1】:

    您可以通过实现 RoleProvider 来做到这一点。查看这些链接:

    http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx

    http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

    【讨论】:

    • 更准确地说,public override bool IsUserInRole(string userName, string roleName) { }
    • 是的。顺便说一句,我喜欢使用两种扩展方法来扩展 User 的基类 (System.Security.Principal.IPrincipal) 是 "IsInAnyRole(string[])" 和 "IsInAllRoles(string[])" 来检查一个用户在传入数组中的所有角色或任何角色中。这些对于复杂的角色逻辑很有用。实施作为您自己的练习。
    【解决方案2】:

    要使用自定义逻辑,您可以使用角色创建自己的表单身份验证 cookie,然后在 Global.asax 中将其读回。

    查看这些:

    private void SetAuthenticationCookie(int employeeID, List<string> roles)
    
    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    

    http://weblogs.asp.net/rajbk/archive/2010/04/01/securing-an-asp-net-mvc-2-application.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2013-06-28
      • 2021-03-16
      • 2012-02-14
      • 1970-01-01
      相关资源
      最近更新 更多