3

我正在创建一个托管在启用了表单身份验证的网站下的 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, "/");

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

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

编辑:
我仍然没有工作,但我很确定这与被过滤的 ASPXAUTH cookie 有关。

4

2 回答 2

1

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

于 2013-05-23T21:41:09.783 回答
0

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

于 2013-05-05T16:59:52.277 回答