我正在创建一个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由另一站点消耗。