Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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 5 Mono MVC5 User.Identity.IsAuthenticated在使用FormsAuthentication.SetAuthCookie()登录后返回false_Asp.net Mvc 5_Mono_Monodevelop_Formsauthentication - Fatal编程技术网

Asp.net mvc 5 Mono MVC5 User.Identity.IsAuthenticated在使用FormsAuthentication.SetAuthCookie()登录后返回false

Asp.net mvc 5 Mono MVC5 User.Identity.IsAuthenticated在使用FormsAuthentication.SetAuthCookie()登录后返回false,asp.net-mvc-5,mono,monodevelop,formsauthentication,Asp.net Mvc 5,Mono,Monodevelop,Formsauthentication,我正在尝试将MVC5 web应用程序移植到Linux MonoDevelop 该站点正在使用FormsAuthentication,因此在登录操作I cal SetAuthCookie()和控制器上使用Authorized属性,以确保只有登录的用户才能访问该功能 这一切都在Windows上运行良好 在移植到Mono并用MonoDevelop调试之后,我发现它不起作用了。实际上,在成功登录后,用户会再次重定向到登录页面 我试图从HomeController中删除[Authorize]属性,只是为了

我正在尝试将MVC5 web应用程序移植到Linux MonoDevelop

该站点正在使用FormsAuthentication,因此在登录操作I cal SetAuthCookie()和控制器上使用Authorized属性,以确保只有登录的用户才能访问该功能

这一切都在Windows上运行良好

在移植到Mono并用MonoDevelop调试之后,我发现它不起作用了。实际上,在成功登录后,用户会再次重定向到登录页面

我试图从HomeController中删除[Authorize]属性,只是为了检查发生了什么,我意识到在HomeController操作中,User.Identity.IsAuthenticated返回false。我想这就是为什么我得到了登录的重定向

但为什么User.Identity.IsAuthenticated返回的值为false

我检查了windows上的SetAuthCookie()是否在http上下文中创建了.ASPXAUTH cookie。在Linux上,它在http上下文中创建.MONOAUTH cookie。 我尝试通过以下方式在web.config中配置cookie名称:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" name=".ASPXAUTH" />
</authentication>

但这不起作用

更新
我意识到,在mono上,SetAuthCookie()运行成功,但cookie不存在(通过使用Firefox cookie管理)。然而,在调试时,Response.Cookies集合合并了.ASPXAUTH cookie。似乎无法在客户端上生成该表单。

检查代码中是否调用了FormsAuthentication.SignOut()


我在mono中遇到了类似的问题,这是由于cookie生命周期的不同,这导致了对FormsAuthentication.SignOut()的不必要调用,并在实际创建.ASPXAUTH cookie之前将其销毁。

难以置信!谢谢,我也是这样。我在.ASPXAUTH cookie中初始化了一些其他cookie-B。没有立即在HttpRequest上添加B-cookie,因此导致某些函数调用FormsAuthentication.SignOut()并杀死my.ASPXAUTH cookie,该函数检查B是否存在。