MVC3 アプリケーションでユーザーとロールにカスタム メンバーシップを使用しています。カスタム ユーザー/ロール クラスがあります。そして、このために RoleProvider クラスと MembershipProvider クラスを拡張しました。
アプリケーションで時々ロールが失われ、Authorize [Roles='xyz'] 属性が正しく機能せず、アカウント/ログオンにリダイレクトしようとするケースがあるようです。ユーザーがアプリケーションにログインするとき、私がすることは
if (ModelState.IsValid)
{
if (MyCustomSecurity.Login(model.UserName, model.Password, model.RememberMe))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
--other stuff
}
MyCustomSecurity.Login メソッドは基本的にデータベース内のユーザーを検索し、有効な場合は真の値を返します。
アプリケーションで問題をデバッグしようとしたときに、以下のリンクに遭遇しました
http://www.codeproject.com/Articles/578374/AplusBeginner-27splusTutorialplusonplusCustomplusF ASP.NET MVC フォーム認証 + Authorize 属性 + シンプルなロール
このリンクに記載されているように、 FormsAuthentication_OnAuthenticate() もオーバーライドする必要がありますか? それとも、RoleProvider 拡張クラスがこれを処理しますか?
ありがとうございました