我似乎有一些问同样的问题,但迄今为止没有一个解决方案对我有用,所以我想看看我做错了什么。我有一个网站,我正在使用asp.net MVC创建,目前我正在使用表单身份验证,以防止匿名用户浏览该网站。这段代码如下。
<authentication mode="Forms" >
<forms loginUrl="~/login" timeout="15"/>
</authentication>
然后我有一个登录控制器,让用户输入他们的用户名和密码,然后在信息准确的情况下创建一个authcookie。
if (password == encryptedPassword)
{
FormsAuthentication.SetAuthCookie("user", true, model.userName);
}
所有这些都适用于Firefox和Chrome,用户登录后即可浏览该网站。但是在IE中它会一直返回到登录屏幕,因为它会一直将用户识别为匿名用户。我检查过,当您进入下一页时,Auth cookie从未创建或不会保留。我尝试解决此问题的一些尝试涉及在web.config中使用cookieless。唯一有效的是实际将cookie放在URI中的那个,我们不能为该网站提供。然后我尝试设置ticketCompatibilityMode =“Framework40”,但那里也没有运气。
我确实看到域名中包含非字母数字字符的错误。我目前使用IP直接访问域,所以我不知道句点是否会运行此问题,但即使我的本地主机也遇到同样的问题。任何意见都将不胜感激。
答案 0 :(得分:1)
参数应按以下顺序排列。
FormsAuthentication.SetAuthCookie(model.userName, true, ...);
OR
FormsAuthentication.SetAuthCookie(model.userName, true);
http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.setauthcookie.aspx