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) ロール プロバイダーを用意する必要はありません。応用

2) web.config または app.config がこれに適した場所です

于 2012-07-25T09:31:15.413 に答える