2

MVC2 アプリケーション用のカスタム MembershipProvider の実装に成功しました。私は自分の User テーブルと Role テーブルを持っています。

私の問題は、 [Authorize(Roles="blah")] 属性を入れても機能しないことです。少し検索しましたが、探している決定的な答えが見つかりませんでした。つまり、この役割の承認はどのように機能しますか? 私の web.config は、標準の AspNet ロール プロバイダーを使用します。

私の理解では、User.cs クラスに IPrincipal インターフェイスを実装する必要があります。つまり、IsInRole をチェックするコードを追加する必要があります。

私の質問 -- これは正しいですか? フレームワークはどのようにしてカスタム User オブジェクトを取得し、どのように取得するのですか? 私の理解では、Asp.Net の認証と承認の部分は MembershipUser で機能します。

ヒント、考え、またはリンクは大歓迎です、Thx

4

2 に答える 2

1

わかりました、私はそれを理解したと思います、私はほんの少し盲目です。

独自のカスタムMembershipProvider(独自のカスタムUserテーブルとRoleテーブルを使用)を作成したので、カスタムRoleProviderを実装する必要があったのは当然のことです。つまり、RoleProviderにはIsUserInRoleメソッドがあるため、これを実行すると、すべてが理にかなっています。

public override bool IsUserInRole(string username, string roleName)
    {
        IUserRepository userRepository = GetUserRepository();
        User user = userRepository.Retrieve(username);

        // and here, my User class implements IPrincipal
        if (user != null && user.IsInRole(roleName)) 
                return true;
        else
            return false;
    }
于 2011-01-29T06:10:48.677 に答える
1

あなたのロールテーブル/コードは RoleProvider の実装ですか? IPrincipal は、web.config で構成されているデフォルトの RoleProvider に対して機能すると思います。

このフォーラムの投稿では、必要に応じて独自の IPrincipal を実装するために必要なことについて説明しています。

于 2011-01-29T05:43:06.267 に答える