MVC2からMVC4に移行しました。認証にFacebookJavascriptAPIを使用しているため、ユーザーはFacebook経由でログインし、FacebookIDを取得します。Facebookのログイン試行が成功した場合、MVC 2では、[Authorize]属性を持つメソッドにアクセスできるように、これを実行して自分のサイトにログインしました。
FormsService.SignIn(user.UserName, true);
MVC 4に移行した後も、Facebookのログインプロセスは正常に機能しますが、FormsService.SignInを実行した後でも、ユーザーは認証されていないようです。HttpContext.User.identity.IsAuthenticatedはfalseです。その結果、[Authorize]属性を持つメソッドにアクセスできなくなります。
私のMVC4web.configは次のようになります。
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<membership defaultProvider="UserMembershipProvider">
<providers>
<!--<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />-->
<add name="**UserMembershipProvider**" type="MyProject.Models.UserMembershipProvider" applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
ご覧のとおり、MVC 2で「UserMembershipProvider」というカスタムメンバーシッププロバイダーを使用していましたが(Facebook認証に移行した後は実際には使用されませんでした)、同じものをMVC4にコピーしました。
私は何が欠けていますか?
ありがとう。