2016-10-25 7 views
-1

AuthorizeAttributeを継承するカスタム認証クラスを作成しました。ユーザーは複数の役割を持つことができるため、enum AccessLevelのリストを返します。その下の例では、唯一の管理者および/または承認者にSomeFunctionを制限ように私は、私のコントローラメソッドを飾っ:コントローラメソッド内からユーザーロールを取得

[MyAuthorization(AccessLevels = new[] { AccessLevel.Admin, AccessLevel.Approver })] public ActionResult SomeFunction() { \\Do stuff... }

私の質問です - することなく、SomeFunctionの中からユーザーのアクセスレベルを取得する方法がありますもう一度やり直してください。または、コントローラがそれらをチェックした後に失われたアクセスレベルのリストはありますか?

答えて

0

私は、あなたが探していると思う:

User.IsInRole("role here") 

それとも

UserManager.FindByNameAsync("name").Roles 
+0

私は 'User.IsInRole(" Admin ")'を試しましたが、私は、常にfalseを返します。非標準的な役割のために特別なことがありますか?また、UserManagerは存在しないようです: '名前 'UserManager'は現在のコンテキストに存在しません。 ' –

-1

私はあなたに似た何かを行われ、ここに私の提案ですしています。

データベースでは、ページ/ビュー名を表示できるユーザーに割り当てます。

次に、どのようにフィルタを作成しますか。ユーザーが(ログインしている)ユーザーがビュー内のコンテンツを見る権限を持っているかどうかを比較するフィルター書き込みコードの内側にあります。この方法では、すべてのアクションメソッドでフィルターにパラメーターを渡さないことで時間を節約できます。

あなたに役立つかどうかを教えてください。私は詳しく説明します

関連する問題