zoukankan      html  css  js  c++  java
  • 多系统间用户账号自动登录的解决方案

    多个系统的用户表以一个字段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,则进入会员中心或首页即可),不符合进入条件就返回登录提示页面

       

        至此,所有操作结束

  • 相关阅读:
    Visual Studio 2008 菜单:工具+选项+文本编辑器+HTML+格式,选中“键入时插入属性值引号”
    itemarray的意思
    SQL技巧大全
    IIS调用com组件的权限问题
    网站快速备案法(1小时)
    ASP.NET 2.0中WEB应用程序的部署
    c#中MessageBox的使用
    推荐一款DataGridView的打印解决方案
    使用C#格式化字符串
    关于MSSQL导入导出时主键与约束丢失的问题解决
  • 原文地址:https://www.cnblogs.com/sutengcn/p/1386713.html
Copyright © 2011-2022 走看看