0

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にコピーしました。

私は何が欠けていますか?

ありがとう。

4

1 に答える 1

2

web.config のフォーム認証セクションをアップグレードしたときに削除/更新された可能性はありますか?

于 2013-01-31T02:38:13.993 に答える