asp.net - 同步不同子域(asp.net)中的cookie和 session

标签 asp.net cookies session

我正在asp.net中建立一个站点,并且具有多个子域。例如,
one.cookies.com
two.cookies.com

我希望我的用户能够在任何一个子域中登录并登录两个网站。另外,我希望 session 和cookie 保持同步。到目前为止,我还没有找到一种可靠的方法来执行此操作。

最佳答案

创建Cookie时,您可以设置域:

HttpCookie cookie = new HttpCookie("name", "value");
cookie.Domain = "cookies.com";

这将允许您从cookie.com的所有子域访问您的cookie。

如果您使用FormsAuthentication,则可以在web.config中设置auth cookie的域:
<forms name=".ASPXAUTH"
       loginUrl="login.aspx"
       defaultUrl="default.aspx"
       protection="All"
       timeout="30"
       path="/"
       requireSSL="false"
       domain="cookies.com">
</forms>

请记住,要使单点登录可以在多个子域上工作,ASP.NET应用程序必须共享相同的machine keys,如本CodeProject article中所述。

在不同子域(不同的工作进程)之间共享 session 更加困难,因为 session 受限于应用程序,您将必须实现自定义 session 同步机制。

关于asp.net - 同步不同子域(asp.net)中的cookie和 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444018/

相关文章:

c# - 动态创建的按钮不调用事件 c#

.net - ASP.NET 页面中的 AspxAutoCookieProblem

java - 无法延迟初始化角色集合无法初始化代理 - 无 session

java - 在 Spring webflow 中捕获 "dead" session

asp.net - SessionState 过期行为

asp.net - 在 ASP.NET 网页上自由移动控件

c# - 使用 System.IdentityModel.Tokens.Jwt 从 1.1 迁移到 2.0 后,JWTAuthentication 在 asp.net core 2.0 中不起作用 - 5.1.4 更新

ASP.net session cookie 丢失或删除

ruby-on-rails - 在 Rails 3.x 应用程序中禁用 Cookie

cookies - 使用curl发送cookie