唯一可以创建特定域 cookie 的是在您正在创建的域上解析的机器。如果您想创建一个名为的 cookie,account_a.mydomain.com
则必须从该特定域访问您的服务器的 url。鉴于此,不可能account_a.mydomain.com
创建特定于的 cookie,forum.mydomain.com
因为它们是完全独立的地址。任何创建此类 cookie 的尝试实际上都会为account_a.forum.mydomain.com
.
至于如何让它工作,你还没有真正说明为什么你首先要以这种方式修改 cookie,所以这很难说。每个浏览器只能为用户拥有一个有效的身份验证 cookie,并且这些 cookie 对浏览器的所有实例都是通用的,因此实际上不可能让 account_a 的 cookie 验证 account_b,而这两个 cookie 不能无论如何都住在同一台机器上。域级身份验证的目的之一是防止这种同时多重性。
编辑:( 回复评论)
在您希望用户能够穿越到多个域服务器的场景中,您不需要接触 cookie 本身。它会自动将自己绑定到mydomain.com
域并允许这样的遍历。尝试在全局对象上应用单独的系统级安全机制只是有点倒退。打个比方,你不会用带刺铁丝网围住你房子周围的栅栏,以防止有人进入你的地下室。需要在该服务器级别应用防止account_a
访问域的身份验证控制。account_b
我的猜测是,您有某种形式的通用代码,其中域针对身份验证进行了合理化,因此您真正需要做的是处理实际授权。
一种方法是将一些自定义代码添加到 Page 基类的 Init 或 Load 事件中。BeginRequest
此外,您可以在 global.asax 中为事件添加一段逻辑。我见过使用的一种技术(尽管我自己从未使用过)是添加到 global.asax 中的 AuthorizeRequest 事件。我找不到任何描述该主题的文档,但我确实找到了一个显示它是如何完成的示例的文档。https://nport.svn.codeplex.com/svn/jacky/ccs/CCWeb/Global.asax.cs