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只做密码验证,其它权限还是由子系统分别设置。

  • 相关阅读:
    MVC session过期如何处理跳转
    MVC+EF更新数据库
    python 判断 windows 隐藏文件/系统文件
    字符编码简介
    Essential C++ 学习笔记02--Array/Vector 与指针
    Essential C++ 学习笔记01--基本语法
    mongodb 入门笔记
    何谓可分页和非分页内存
    Git使用
    _stdcall 函数 debug/release汇编代码区别
  • 原文地址:https://www.cnblogs.com/softidea/p/3879042.html
Copyright © 2011-2022 走看看