1

我似乎有一些人在问同样的问题,但到目前为止,没有一个解决方案对我有用,所以我想看看我是否做错了什么。我有一个使用 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 直接访问域,所以我不知道周期是否会出现这个问题,但即使是我的本地主机也会遇到同样的问题。任何输入将不胜感激。

4

1 回答 1

1

参数应按以下顺序排列。

FormsAuthentication.SetAuthCookie(model.userName, true, ...);

或者

FormsAuthentication.SetAuthCookie(model.userName, true);

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.setauthcookie.aspx

于 2013-03-19T19:26:49.320 回答