Asp.net 子域共享cookie

最近项目遇到要共享cookie的问题,本来后台保存session用的是redis来保存数据的。所以只需要2个站点发的ASP.NET_SessionId是相同的就可以,并且它的Domain 是父级域名。实现code:

protected void Session_Start(object sender, EventArgs e)
        {
            Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID.ToString();
            Response.Cookies["ASP.NET_SessionId"].Domain = ".aa.com";
        }

网上有类似参考地址:Asp.Net集群中Session共享

很多时候项目的cookie name 都是需要替换默认的ASP.NET_SessionId(需要读取配置),同时我们在开发的时候也不知道具体的父级域名(需要用正则表达式),所以具体实现code如下:

protected void Session_Start(object sender, EventArgs e)
        {
            SessionStateSection config = (SessionStateSection)WebConfigurationManager.GetSection("system.web/sessionState");
            string cookieName = config.CookieName;
            Response.Cookies[cookieName].Value = Session.SessionID.ToString();
            string url = Request.Url.ToString();
            Regex reg = new Regex("([^.]*).([^.]*).com");
            Match m = reg.Match(url);
            if (m.Groups.Count > 2)
            {
                Response.Cookies[cookieName].Domain = $".{m.Groups[2].Value}.com";
            }
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值