Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迁移到ASP.NET MVC 4后授权被破坏_Asp.net_.net_Asp.net Mvc_Asp.net Mvc 2_Asp.net Mvc 4 - Fatal编程技术网

迁移到ASP.NET MVC 4后授权被破坏

迁移到ASP.NET MVC 4后授权被破坏,asp.net,.net,asp.net-mvc,asp.net-mvc-2,asp.net-mvc-4,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 2,Asp.net Mvc 4,我从MVC2迁移到MVC4。我使用Facebook Javascript API进行身份验证,因此用户通过Facebook登录,我只需获取他们的Facebook Id。如果他们的Facebook登录尝试成功,在MVC 2中,我只需将他们登录到我的网站,这样他们就可以访问具有[Authorize]属性的方法: FormsService.SignIn(user.UserName, true); 现在,在迁移到MVC4之后,我的Facebook登录过程仍然可以正常工作,但即使在执行FormsServ

我从MVC2迁移到MVC4。我使用Facebook Javascript API进行身份验证,因此用户通过Facebook登录,我只需获取他们的Facebook Id。如果他们的Facebook登录尝试成功,在MVC 2中,我只需将他们登录到我的网站,这样他们就可以访问具有[Authorize]属性的方法:

FormsService.SignIn(user.UserName, true);
现在,在迁移到MVC4之后,我的Facebook登录过程仍然可以正常工作,但即使在执行FormsService.SignIn之后,用户似乎也没有经过身份验证。HttpContext.User.identity.IsAuthenticated为false。因此,它们无法访问具有[Authorize]属性的方法

我的MVC 4 web.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>

正如你所看到的,我在MVC2中使用了一个名为“UserMembershipProvider”的自定义成员资格提供程序(尽管在我转到Facebook身份验证后它并没有真正被使用),我将同样的内容复制到了MVC4

我错过了什么


谢谢。

当您升级web.config中的forms auth部分时,是否有可能被删除/更新?

哦,等等,我想您是对的,我在MVC 4配置中没有看到forms auth部分。是的,就是这样…将该部分添加回,身份验证似乎再次工作。谢谢