我正在创建一个在启用了表单身份验证的网站下托管的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有关。
答案 0 :(得分:1)
我确定这个问题有多种原因。就我而言,问题是我用来编写cookie的MVC版本与解密它的版本不同。我将我的网站更改为全部运行MVC 4,并且由一个站点创建的cookie可由其他站点使用。
答案 1 :(得分:0)
.ASPXAUTH cookie是否生成了安全cookie,即SSL?如果是这样,并且您的Index.aspx仅通过HTTP而不是HTTPS,则不会在集合中看到cookie。