2011-01-29 3 views
2

MVC2アプリケーションのカスタムMembershipProviderを正常に実装できました。自分のUserテーブルとRoleテーブルがあります。MVC認可ロールとIPrincipal - どのように動作しますか?

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

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

私の質問は正しいですか?フレームワークは私のカスタムUserオブジェクトを取得する方法を知っていて、知っていますか?私の理解は、Asp.Net認証&承認作品はMembershipUserで動作することです。

任意のヒント、思考、またはリンクが非常に高く評価されるだろう、 Thxを

+0

しかし私は、ASP.NET&WCFにあなたが一緒に何かをしたい、これはMVCでどのように動作するかを確認していません[Authorize(Roles = "RoleName")]の代わりに[PrincipalPermission(SecurityAction.Demand、Role = "RoleName")] – bleepzter

答えて

1

は、あなたの役割表/コードRoleProviderの実装ですか?私はIPrincipalがweb.configで設定されているデフォルトのRoleProviderに対して動作すると信じています。

このforum postは、必要に応じて、独自のIPrincipalを実装するために必要なことについて説明しています。

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; 
    } 
関連する問題