【发布时间】:2011-08-15 18:39:03
【问题描述】:
我有两个 MVC3 站点,它们都托管在我配置为使用相同身份验证 cookie 的同一台服务器上。
第一个站点是使用 Windows 身份验证的 Intranet 站点。该站点有一个简单的操作,用于检查用户是否已通过身份验证,如果用户已通过身份验证,它会创建一个 FormsAuthentication cookie,并将其添加到响应中。此 cookie 是为我从用户的 AD 组中确定的一般用户创建的。然后响应将用户重定向到使用表单身份验证的第二个站点。
当我在本地机器上运行它时,一切都如前所述。当我将它部署到我们的本地 Web 服务器时,它没有。我已经测试了用户的组是否被正确确定,它是否为 cookie 创建了一个有效的用户,并且我已经验证这在 web 服务器上是正确的。
我是这样做的:
首先,我让两个站点使用相同的机器密钥进行加密和解密。
当我在 Site1 中创建 cookie 时,我确保它与在 Site2 上创建的 cookie 具有相同的名称和域。
var cookie = FormsAuthentication.GetAuthCookie(userName, false);
cookie.Domain = FormsAuthentication.CookieDomain; //This is the Domain of my 2nd site as they are different
HttpContext.Response.Cookies.Add(cookie); //Add my cookie to the response
HttpContext.Response.RedirectPermanent(urlForSite2);
同样,当我在本地计算机上运行它时,它可以正常工作。但是在部署时,它要么没有在请求中传递 cookie,要么响应忽略了它,但我不确定如何验证这两种情况。
如有任何问题,请随时询问有关我如何执行此操作的更多详细信息,如果这有助于获得我需要的答案。
【问题讨论】:
标签: asp.net-mvc-3 cookies forms-authentication