多系统间用户账号自动登录的解决方案

多个系统的用户表以一个字段UserId来关联。该值在所有用户表中唯一,是用户的唯一标识。在用户表中新增一个字段UserGuid,该字段里保存的是调用mssql内置函数 NEWID() 而产生的一个唯一的不重复的字符串。

每个系统中增加两个页面,文件名为:AutoLoginTo.aspx(2个传入参数,ToSiteToUrl)AutoLoginFrom.aspx(此页面有3个传入参数,分别为UserIdAuthStrToUrl)

当会员已经登录了某个系统,需要直接登录进另一个系统时,一般情况下是点击一个超链接打开新的浏览器窗口进入

但注意,此处的超连接我们不是直接链接到新系统,而是链接到本系统内的 AutoLoginTo.aspx 页面(浏览器还停留在当前系统中),这个页面的功能如下:

    首先判断当前会员是否已经在本系统成功登录,

    如果不是就直接回本系统首页,所有操作结束

    如果是则向上面提到的用户表的这个用户的相关记录(有且只有一条)的UserGuid字段写入 NEWID()

    在取得了刚写入的记录的 ID 字段值(比如:23456)和 NEWID() 值(比如:6F9619FF-8B86-D011-B42D-00C04FC964FF)后

    Response.Redirect方法将浏览器重定向到 目标系统(ToSite)的 AutoLoginFrom.aspx?UserId=23456&AuthStr=6F9619FF-8B86-D011-B42D-00C04FC964FF&ToUrl=xxxxx 页面即可

    至此,当前系统操作结束

 

在目标系统中,AutoLoginFrom.aspx页面接收到传入的3个参数,

    根据UserId、AuthStr这两个参数到 用户表中查找是否有匹配的记录(此处注意不要犯注入漏洞错误,不要直接在一个sql语句中判断)

    如果没有,则回到系统的登录页,提示登录,所有操作结束

    如果有匹配记录,则先将 用户表中相应的记录的 UserGuid 字段的值清空(千万注意不是删除此记录,而且此步骤要先做)

   然后为该用户执行自动登录步骤,如果符合进入系统的条件,就跳转到ToUrl指定的页面(如果没有指定ToUrl,则进入会员中心或首页即可),不符合进入条件就返回登录提示页面

   

    至此,所有操作结束

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值