私はASP.NET MVCアプリケーションに権限を追加する作業をしており、ロードブロックを実行しています。最終的に私たちのカスタムメンバーシッププロバイダーを結成させ、アプリケーションの認証を取得することができました。さて、コントローラに[Authorize]属性を追加すると、ページを表示するためにはユーザーが認証されている必要があります。また、特定のユーザーにページを制限する[Authorize(Users = "{userName}")]も正常にテストしました。HttpContext.Current.User.IsInRole(roleName)は常にfalseを返します
[Authorize(Roles = "{RoleName}")]が期待どおりに機能していないようです。その属性をコントローラに追加すると、対応するページにアクセスしようとするたびに、私はログインページにリダイレクトされます。これは、ユーザーに必要な役割がない場合に発生すると予想されるものですが、ユーザーにその役割があっても発生しています。 View、Controller、HelperメソッドでUser.IsInRole( "{roleName}")とHttpContext.Current.User.IsInRole( "{roleName}")の両方をチェックしていますが、これは常にFalseを返します。
私が働いているユーザーが、私が承認しようとしている役割を持っていることを確認しました。また、WebForms Appでこれらのユーザーをテストして、同じロールでページアクセスを制限しても問題なく動作します。私はどこかに何か設定が間違っているか、何か簡単なものが見つからないと思っていますが、午前中に検索した後、私は解決策に近づいたものを見つけていないので、ここで誰かが私を助けてくれることを望んでいます。
あなたの回答を編集して、設定が何であるかを教えてください。これは他の人に将来役立つかもしれません。 – sirrocco
sirrocco - 設定は私たちの実装と環境に固有のものなので、他の人にはあまり役に立ちません。 – Hamman359
私のweb.configを再確認するようにコメントが表示され、roleManagerノードが有効になっていることがわかりました= "false"。私は、あなたが期待しているような何らかの例外を返すのではなく、IsInRoleに対して、それが無効の場合はfalseを返すことを人々に知りたがっています。 –