zoukankan      html  css  js  c++  java
  • SSO(转)

    一、介绍

          主站下有多个子系统,每次登录主系统,跳转到子系统时,又需要重新登录;

          子系统与主系统都有各自的用户信息表;各个系统的用户角色、权限也各不相同;    

    二、目的

          每次登录主系统,跳转到子系统后,不用再重新输入用户名、密码,进行登录;也就是“单点登录”;

    三、主要思路

          (1)跨子域共享cookie(主站:www.A.com   子站:test.A.com    →设置cookie的Domain=“.A.com” 就可以实现cookie共享)

          (2)分布式session(暂未涉及,下班研究下~~)

    四、具体实现

          思路一(跨子域共享cookie):在任意一个系统登录成功后,将用户名保存到cookie中;当用户进入其他系统时,首先判断cookie中的用户名是否为空;如果为空,则跳转到当前系统的登录页面;不为空则根据用户名,查询出当前系统的用户信息,实现自动登录;

          思路二(分布式session):创建单独的用户信息数据库,统一的登录入口;在任意一个系统登录成功后,将用户的详细信息存储到session中;当用户进去其他系统时,首先判断session中的用户信息是否为空;如果为空,则跳转到登录页面,登录成功后再返回当前页面;如果不为空则显示当前页面内容;

               ----用户信息数据库表结构:系统分类表、用户基本信息表、角色类型表、权限表、用户角色表

                     ->系统分类表:系统编号、系统名称

          ->用户基本信息表:用户的基本字段~~

          ->角色类型表:角色编号、角色名称、所属系统编号

          ->权限表:用户编号、系统编号、权限值

          ->用户角色表:用户编号、所属角色编号

               当用户再任一系统登录时,可以根据用户名、密码、系统编号得到当前用户的基本信息以及当前系统的角色、权限信息等

    用分布式session服务器,所有主系统 子系统都去特定的session服务查找判断

    我用的也是第二种方案,更灵活一点。
    SSO只做密码验证,其它权限还是由子系统分别设置。

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/softidea/p/3879042.html
Copyright © 2011-2022 走看看