博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSO(转)
阅读量:7157 次
发布时间:2019-06-29

本文共 889 字,大约阅读时间需要 2 分钟。

一、介绍

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

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

二、目的

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

三、主要思路

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

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

四、具体实现

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

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

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

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

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

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

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

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

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

 

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

我用的也是第二种方案,更灵活一点。

SSO只做密码验证,其它权限还是由子系统分别设置。

 

转载于:https://www.cnblogs.com/softidea/p/3879042.html

你可能感兴趣的文章
使用SQL生成DateTime.Ticks
查看>>
用ildasm破解和用ilasm来重新编译<转>
查看>>
Autovacuum 的运行限制
查看>>
3、CC2541芯片中级教程-OSAL操作系统(ADC光敏电阻和修改串口波特率)
查看>>
[LeetCode] Best Time to Buy and Sell Stock II
查看>>
随机森林和GBDT的几个核心问题
查看>>
[033] 微信公众帐号开发教程第9篇-QQ表情的发送与接收(转)
查看>>
[035] 微信公众帐号开发教程第11篇-符号表情的发送(上)(转)
查看>>
eclipse中jad反编译工具的安装
查看>>
[Struts]"Cannot find bean in any scope"之一解
查看>>
【Java学习笔记之十八】Javadoc注释的用法
查看>>
DevExpress控件开发常用要点(项目总结版)
查看>>
《嵌入式系统数字视频处理权威指南》——第2章 视频处理介绍2.1数字视频:像素和分辨率...
查看>>
“九头虫”病毒技术分析报告
查看>>
程序员如何让自己 Be Cloud Native - 配置篇
查看>>
在idea中如何打Jar包
查看>>
基于lvs-nat方式实现负载均衡
查看>>
C#并行编程之《停止或中断 Parallel.For 循环》
查看>>
linux实用技巧:使用快照制作虚拟机
查看>>
Windows Server 2012正式版RDS系列④
查看>>