前言

本文借鉴学习了团团大佬的文章和源码
原文地址
想知道单点登录原理等理论可以移步大佬文章

代码及实现

本次学习基于session模拟了数据库查询和token权限认证

构建

准备三个服务器,这里用三个springboot项目直接模拟了,他们三个端口不一样


oa : springboot模拟的子系统 端口 8082
ekp: springboot模拟的子系统 端口 8083
index : springboot模拟的主系统 端口 8080
login : springboot模拟的sso认证系统 端口 8081

代码实现

在登录的时候,如果登录成功则将登录信息生成 一个token,将他存入session。(模拟存入数据库或redis)然后每次访问其他子系统的时候就带着这个token(相当于登录信息)。进入子系统的时候会检查token的真实性。实现单点登录

//这里token模拟了权限认证框架的认证信息

下面是login,模拟sso认证的控制层

   @GetMapping("/login")public String login(@RequestParam(value = "target",required = false,defaultValue = "http://localhost:8080/") String target, HttpSession session){//        获取网址前缀session.setAttribute("target",target);return "login";}@PostMapping("/check")public String checkUser(User user, HttpSession session, HttpServletResponse response){//        拿到网址String target = session.getAttribute("target").toString();String token = "";//模拟数据库验证if(user.getUsername().equals("admin") && user.getPassword().equals("123456")) {//模拟一个token 因为目前没用域名,所以直接把token拼接在url上面了token = UUID.randomUUID().toString();
//            Cookie cookie = new Cookie("token",token);
//            cookie.setDomain("baidu.com");
//            response.addCookie(cookie);return "redirect:" + target +"?token="+token;}else {session.setAttribute("msg","登录失败,请检查用户名和密码后重试!");return "login";}}

这里将token存入了session,页面上访问其他子系统的时候会在url后面拼接这个token。

最后进入系统的时候会检查,token的正确性并放行
//这是三个系统(oa ,ekp,index)的控制层都是一样的

package com.index.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.thymeleaf.util.StringUtils;import javax.servlet.http.HttpSession;@Controller
public class IndexController {@GetMappingpublic String index(@RequestParam(value = "token", required = false) String token, HttpSession session) {//模拟token验证if (!StringUtils.isEmpty(token)) {session.setAttribute("username", "admin");session.setAttribute("token", token);}return "index";}//退出登录@GetMapping("/out")public String out(HttpSession session) {session.removeAttribute("username");
//        这里用session模拟从redis中删除token(权限认证信息)session.removeAttribute("token");return "redirect:" + "http://localhost:8080/";}}

总结

学会了单点登录原理,有机会会尝试使用到自己的项目中。

有不懂可以观摩大佬源码
这是团团大佬的gitee源码地址


SpringBoot实现基础的sso单点登录相关推荐

  1. SpringBoot+MyBatis+Redis实现SSO单点登录系统(二)

    SpringBoot+MyBatis+Redis实现SSO单点登录系统(二) 三.代码 配置文件配置数据库,redis等相关的信息. # See http://docs.spring.io/sprin ...

  2. SpringBoot+MyBatis+Redis实现SSO单点登录系统(一)

    SpringBoot+MyBatis+Redis实现SSO单点登录系统(一) 一.SSO系统概述 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可 ...

  3. JAVA springboot ssm b2b2c多用户商城系统源码-SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  4. redis 登录_Redis集群架构+Dubbo开发框架+SSO单点登录+Nginx+ZooKeeper

    Redis集群架构 [课程介绍] Redis是现在使用为广泛的NoSQL数据库技术,其自身不仅拥有着良好的操作性能,也被广泛的应用于各种集群架构的数据整合处理之中,而本课程将通过Redis的核心作用, ...

  5. 互联网分布式微服务云平台规划分析--SSO单点登录系统

    介绍 鸿鹄云架构[SSO单点登录系统]为所有微服务提供统一的用户认证服务,系统本身属于微服务模式,使用JWT+Redis分布式存储方案,确保不同微服务.系统之间的安全通讯和统一用户校验.认证.在整个服 ...

  6. cas跨域单点登录原理_CAS实现SSO单点登录原理

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  7. 写了一个 SSO 单点登录的代码示例给胖友!

    发危~ " 摘要: 原创出处 http://www.iocoder.cn/Spring-Security/OAuth2-learning-sso/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1 ...

  8. 基于CAS实现SSO单点登录

    点击关注公众号,实用技术文章及时了解 1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使 ...

  9. SpringBoot 简单实现仿CAS单点登录系统

    SpringBoot 简单实现仿CAS单点登录系统 新境界开源开源SSO项目介绍 新境界开源SSO项目实现原理大致如下: 新境界开源SSO项目登录流程介绍 新境界开源SSO项目授权登录流程介绍 新境界 ...

最新文章

  1. LL(1)预测分析表的构造
  2. 爬虫学习笔记(三)—— requests库
  3. WCF 第八章 安全 基于证书的加密
  4. 私有云的部署(1)_ISCSI 无盘引导的一些心得
  5. BZOJ 3513: [MUTC2013]idiots [FFT]
  6. MySQL元数据库——information_schema
  7. git+jekyll部署备忘
  8. IIS虚拟目录实现与文件服务器网络驱动器映射共享
  9. wikioi 1163 訪问艺术馆 树形dp
  10. 联合密度函数求期望_已知(X,Y)的联合概率密度,分别求X,Y的期望、方差
  11. 音质好的linux主机,实测:ASIO 的音质更好?
  12. html5妇女节游戏,2020三八妇女节趣味游戏大全_妇女节可以举办哪些活动
  13. 办公室计算机收不到主机打印机,图文详解电脑怎么连接办公室打印机 一招教你搞定!...
  14. 王垠:完全用Linux工作及其后续
  15. 共享锁和排他锁的区别
  16. 计算机组成原理之CPU、外存、内存之间的关系
  17. python比赛积分类算法题_python几道简单的算法题
  18. python计算等额本金_等额本金-逆推 - tedzheng的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. 探索:使用北鲲云平台利用Gaussian16进行HAT反应过渡态的寻找
  20. Python3.x爬虫下载网页图片

热门文章

  1. Matlab Serial Port学习
  2. Windows环境下运行Jenkins项目,输出乱码
  3. linux常用命令积累
  4. 记一篇IT培训日记013-海燕
  5. 2016华为软件精英挑战赛总结
  6. 关于微博的正文的整个思维逻辑
  7. Javaweb---EL
  8. 冰冰学习笔记:进程控制
  9. STM32降价了,芯片价格大跳水。
  10. 大专生拿到阿里offer,却担心背调不过,网友:985在你面前黯淡无光