3

我正在实现一个IPrincipal我想在多个应用程序中使用的自定义。我有2个关于IsInRole方法的问题......

1)是否建议我将自定义 RoleProvider 与自定义一起使用IPrincipal?我总是可以将检查用户角色的逻辑放在从 IPrincipal 继承的类中。

就像是:

public class SSDSPrincipal : IPrincipal
{ 
    public SSDSPrincipal(SSDSIdentity identity)
    {
        this.Identity = identity;
    }        

    public IIdentity Identity {get;private set;}

    public bool IsInRole(string role)
    {   
        string[] roles = Roles.Providers["SSDSRoleProvider"].GetRolesForUser(Identity.Name);
        return roles.Any(s => role.Contains(s)); 
    }
}

2)因为我想在多个 MVC3 应用程序中使用它。存储应用程序名称的最佳位置在哪里?我需要能够手动设置它。

public bool IsInRole(string role)
{   
    string applicationName = [where can I store this globally for my asp.net mvc3 app]
    return AreTheyInARoleForThisApplication(applicationName, role);
}
4

2 回答 2

2

我想说你可以自由地使用任何你想要的技术来确定一个用途是否在一个角色中。RoleProvider 在这里不是必须的。

您不能将应用程序名称作为构造函数参数传递,然后将其存储在成员中吗?

于 2012-07-25T09:27:18.030 回答
1

1)您不必拥有角色提供者,但是如果您这样做,想法是您的自定义角色提供者应该从 System.Web.Security.RoleProvider 继承,以便它可以与任何其他角色提供者互换而不会破坏应用

2) web.config 或 app.config 是合适的地方

于 2012-07-25T09:31:15.413 回答