我正在尝试将MVC5 Web应用程序移植到Linux Monodevelop。
该网站正在使用Formauthenication,因此在登录操作上i Cal setauthcookie()和在我的控制器上osterizeatTribute,以确保仅登录用户访问该功能。
在Windows上,这一切都很好!
移植到单声道并与Monodevelop进行调试后,我发现它不起作用。实际上,成功登录后,将用户重定向到登录页面。
我尝试从Homecontroller中删除[授权]属性,只是为了检查发生的事情,我意识到 - 在Homecontroller Action中 - user.Identity.Isentity.isauthenticatienciented返回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>
但这不起作用...
更新我意识到,在单声道上,setauthcookie()运行成功,但是cookie不存在(使用Firefox Cookie Management)。然而,在调试中,响应。CookiesCollection包含了.aspxauth cookie。似乎它无法在客户端上生成。
检查代码中的任何地方formauthentication.signout()被调用。
我在单声道中也有类似的问题,这是由于cookie生命周期的差异,这引起了对formauthentication.signout()的不需要的呼吁,并在创建它之前销毁了.aspxauth cookie。
<</p> <</p> <</p>