【问题标题】:How to create a Cookie using SSL pages?如何使用 SSL 页面创建 Cookie?
【发布时间】:2010-10-25 19:33:28
【问题描述】:


我有一个基于 SSL 的 ASP:NET MVC 2 网站。我想创建一个这样的cookie:

FormsAuthentication.SetAuthCookie(validatedUser.UserName, false);
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, validatedUser.SecureToken, DateTime.Now, DateTime.Now.AddMinutes(10), false, String.Empty);

HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));
Response.Cookies.Add(cookie);    

但我得到一个例外,告诉:“应用程序配置为发出安全 cookie。这些 cookie 要求浏览器通过 SSL(https 协议)发出请求。但是,当前请求不是通过 SSL。

在 web.config 我有:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LoginError" timeout="2880" requireSSL="true" protection="All"/>
</authentication>    

我该如何解决这个问题?

【问题讨论】:

标签: asp.net-mvc-2 cookies ssl https


【解决方案1】:

requireSSL="false" 或使用http:// 请求您的站点。请注意,如果您关心安全性,两者都是坏主意。如果您想要一个安全的站点,请离开 requireSSL="true" 并使用 https:// 请求您的站点。

此外,SetAuthCookie 方法已经将 cookie 写入响应,因此您不需要其余部分:

FormsAuthentication.SetAuthCookie(validatedUser.UserName, false);

就够了。您无需担心FormsAuthenticationTicket 并将 cookie 添加到响应中。

【讨论】:

  • 我有 requireSSL="true" 并使用 https:// 因为我需要安全性,但我总是遇到这种异常。
  • 好吧,你得到的异常证明你没有使用https://。或者客户端和重写请求的 Web 服务器之间可能有一些防火墙或代理服务器?网络服务器上是否安装了 SSL 证书?
  • 我发现了问题。就是当我从 VisualStudio 运行网站时,它不会工作。如果我通过 IIS 运行该站点,它就可以工作。
  • 我有相反的问题。我的适用于 VS(IIS Express 或本地 IIS 7),但不适用于 AppHarbor。如果 RequireSSL = false,那么我可以使用 AppHarbor 的证书并且 SSL 工作正常。当我通过 Fiddler 查看流量时,我看不到浏览器尝试在没有 SSL (HTTPS) 的情况下传输 cookie 的任何地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2017-04-13
  • 2011-08-01
相关资源
最近更新 更多