gpt4 book ai didi

asp.net - 表单例份验证和身份验证票证 cookie 域

转载 作者:行者123 更新时间:2023-12-02 10:43:53 24 4
gpt4 key购买 nike

我正在尝试配置 DEV 环境以支持子域,并在子域之间共享身份验证和 session 。

目前,我在 DEV 计算机上配置了 IIS 和主机文件来处理 mydomain、sd1.mydomain、sd2.mydomain、sd3.mydomain 的请求。 Web 应用程序本身按预期工作,我可以浏览所有子域上的所有页面,除了需要身份验证的页面。当我尝试登录时,服务器端的一切看起来都很完美(用户找到、创建 cookie 并将其添加到响应中),但 cookie 未到达浏览器(我尝试了 Chrome 和 IE)。

我有一个创建和存储身份验证票证的代码,并且我在 web.config 的authentication.forms 中设置了domain=".mydomain":

var now = DateTime.UtcNow.ToLocalTime();

var ticket = new FormsAuthenticationTicket(
1 /*version*/, _user.Username, now, now.Add(FormsAuthentication.Timeout),
isPersistentCookie, _user.Username, FormsAuthentication.FormsCookiePath);

var encryptedTicket = FormsAuthentication.Encrypt(ticket);

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
cookie.Secure = FormsAuthentication.RequireSSL;
cookie.Path = FormsAuthentication.FormsCookiePath;
if (FormsAuthentication.CookieDomain != null)
{
cookie.Domain = FormsAuthentication.CookieDomain;
}

_httpContext.Response.Cookies.Add(cookie);

当我调试时,上面的代码工作正常,用户是正确的,并且具有正确域的cookie被添加到响应中。

如果我从 web.config 中删除 domain=".mydomain",身份验证会起作用,但仅适用于 mydomain,而不适用于子域。

我做错了什么?

最佳答案

domain= 中删除开头的点,您必须将其设置为 domain=".mydomain.com",第一个点如此处所述 http://www.w3.org/Protocols/rfc2109/rfc2109 (第7页),感谢@AlbatrossCafe的评论

此设置同时针对 cookie 和身份验证。

关于asp.net - 表单例份验证和身份验证票证 cookie 域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com