cookies共享 sso_.net 实现Cookie跨域共享,单点登录SSO

实现原理:cookie是不能跨域访问的,但是在二级域名是可以共享cookie的

概念说明:站点1=a.devin.com   站点2=b.devin.com

实现步骤:1. 配置两个站点的webconfig

2. a.devin.com写入cookie

3. b.devin.com读取cookie

一、配置Webconfig:

以上machineKey自行生成配置;

如下是登陆写入cookie代码

1 ///

2 ///登陆验证成功后写入FormsAuthenticationTicket3 ///

4 /// 登录名

5 /// 登陆用户信息

6 /// 是否自动登陆

7 public static void Login(string userCode, string userData, bool isAutoLogin = false)8 {9 FormsAuthentication.Initialize();10 DateTime expirationTime = DateTime.Now.AddMinutes(60);11 if (isAutoLogin) expirationTime = DateTime.Now.AddDays(7);12 var authTicket = new FormsAuthenticationTicket(1, userCode, DateTime.Now, expirationTime, false, userData, FormsAuthentication.FormsCookiePath);13 var encryptedTicket =FormsAuthentication.Encrypt(authTicket);14 var authCookie = newHttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)15 {16 Domain =FormsAuthentication.CookieDomain,17 Path =FormsAuthentication.FormsCookiePath,18 Expires =expirationTime,19 HttpOnly = true

20 };21 HttpContext.Current.Response.Cookies.Add(authCookie);22 }

以下是读取登陆cookie信息代码(LoginedUserInfo为登陆用户实体对象,自定义,与登陆中的userData的json串相对应序列化)

1 ///

2 ///获取当前登录用户信息,如未登陆则返回NULL3 ///

4 /// 返回当前登录用户信息

5 public staticLoginedUserInfo GetLoginInfo()6 {7 var currentuser =HttpContext.Current.User;8 if (!currentuser.Identity.IsAuthenticated) return null;9 var userData =((FormsIdentity)currentuser.Identity).Ticket.UserData;10 if (string.IsNullOrWhiteSpace(userData)) return null;11 LoginedUserInfo loginMember = SerializationHelper.JsonDeserialize(userData);12 returnloginMember;13 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值