在Request.Cookies中找不到.ASPXAUTH Cookie

时间:2013-04-19 21:28:52

标签: c# asp.net asp.net-mvc asp.net-mvc-4 forms-authentication

我正在创建一个在启用了表单身份验证的网站下托管的Web应用程序。我在我的身份验证数据库“Admins”中有一个角色。这是我的控制器代码:

[RequireHttps]
[Authorize(Roles = "Admins")]
public ActionResult Index()
{
  return this.View();
}

当我进入索引页面时,如果我没有通过身份验证,它会将我重定向到我输入凭据的登录页面。登录页面然后重定向回新应用程序的索引页面,但控制器无法识别用户已通过身份验证。

我已关闭Authorize属性并查看了Chrome开发者控制台中发出的请求,并确认该Cookie确实已发送。但是如果我按原样保留Authorize属性并转到索引页面,则控制器中请求的cookie集合为空。 headers集合包含一个标题为“Cookie”的标题,标题的值包含.ASPXAUTH cookie。

登录页面使用以下代码调用登录:

FormsAuthentication.SetAuthCookie(userName, remember, "/");

此行为在所有主流浏览器中都可以重现。

我可以做些什么来填充请求的Cookie集合?
我需要做些什么才能使应用程序意识到用户确实已经过身份验证?

修改
我仍然没有它工作,但我很确定它与被过滤的ASPXAUTH cookie有关。

2 个答案:

答案 0 :(得分:1)

我确定这个问题有多种原因。就我而言,问题是我用来编写cookie的MVC版本与解密它的版本不同。我将我的网站更改为全部运行MVC 4,并且由一个站点创建的cookie可由其他站点使用。

答案 1 :(得分:0)

.ASPXAUTH cookie是否生成了安全cookie,即SSL?如果是这样,并且您的Index.aspx仅通过HTTP而不是HTTPS,则不会在集合中看到cookie。