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

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


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

我取消了Authorize属性,并在Chrome开发者控制台中查看了请求,并确认cookie确实已发送。但是,如果我将Authorize属性保持不变,然后转到“索引”页面,则控制器中请求上的cookie集合为空。标头集合包含标题为“ Cookie”的标头,标头的值包含.ASPXAUTH cookie。

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

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


在所有主要的浏览器中,都可以重现此现象。

我该怎么做才能填充请求的Cookies集合?
我需要做些什么才能使应用程序意识到用户确实已通过身份验证?

编辑:
我仍然无法使用它,但是我很确定这与ASPXAUTH cookie被过滤有关。

最佳答案

我确定有多个原因导致此问题。就我而言,问题是我用来编写Cookie的MVC版本与解密它的版本不同。我将所有站点都更改为都运行MVC 4,而由一个站点创建的cookie由另一站点消耗。

10-06 04:38
查看更多