ASP.Net MVC アプリで SimpleMembership を機能させようとしています。承認が必要なすべてのコントローラーは、SecureController という基本クラスを拡張します。
[Authorize]
[InitializeSimpleMembership]
[HandleException]
public class SecureController : Controller
{
protected UserProfile CurrentUser;
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
var currentuserid = WebSecurity.CurrentUserId;
var context = new UsersContext();
CurrentUser = context.UserProfiles.SingleOrDefault(u => u.AuthenticationId == currentuserid);
if (CurrentUser != null)
{
ViewBag.UserName = CurrentUser.Name;
ViewBag.UserId = CurrentUser.Id;
}
}
}
「「WebSecurity」クラスの他のメソッドを呼び出す前に、「WebSecurity.InitializeDatabaseConnection」メソッドを呼び出す必要があります。この呼び出しは、サイトのルートにある _AppStart.cshtml ファイルに配置する必要があります。WebSecurity.CurrentUserId を呼び出そうとするとエラー メッセージが表示されます。InitializeSimpleMembershipAttribute の OnActionExecuting にブレークポイントを設定しましたが、ブレークポイントがヒットしません。InitializeSimpleMembership が無視されているようです。
FilterConfig にも InitializeSimpleMembershipAttribute への呼び出しを追加しました。FilterConfig.RegisterGlobalFilters は Global.asax から呼び出されますが、これも役に立ちませんでした。
何か案は?