第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040
第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第六天】
第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)
第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第八天】(solr服务器搭建、搜索功能实现)
第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第九天】(商品详情页面实现)
第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)
2 课程计划
1、单点登录系统SSO
a) 创建单点登录系统,独立的工程。
b) 发布登录、注册的接口
c) 单点登录系统实现登录、注册功能。
3 什么是单点登录系统
3.1 什么是SSO
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。
3.2 传统的登录流程
3.2.1 传统流程中的问题:
在集群环境中。需要把同一套代码部署到多台服务器上。每个工程都有自己独立的session
在集群环境中每个工程都有自己的session,如果把用户信息写入session而不共享的话,会出现用户反复登录的情况。
第二种方案
实现单点登录系统,提供服务接口。把session数据存放在redis。
Redis可以设置key的生存时间、访问速度快效率高。
优点:redis存取速度快,不会出现多个节点session复制的问题。效率高。
SSO单点登录系统一般流程
4 创建单点登录系统
单点登录系统是一个独立的工程。需要操作redis、连接数据库。
注册之前的数据校验:
Service层
/** * 用户管理Service * * @author kangy * */ @Service public class UserServiceImpl implements UserService { @Autowired private TbUserMapper userMapper; @Override public TaotaoResult checkData(String content, Integer type) { // 创建查询条件 TbUserExample example = new TbUserExample(); TbUserExample.Criteria criteria = example.createCriteria(); // 对数据进行校验:1、2、3分别代表username、phone、email if (1 == type) { criteria.andUsernameEqualTo(content); } else if (2 == type) { criteria.andPhoneEqualTo(content); } else { criteria.andEmailEqualTo(content); } // 执行查询 List<TbUser> list = userMapper.selectByExample(example); if (list == null || list.size() == 0) { return TaotaoResult.ok(true); } return TaotaoResult.ok(false); } }
5.1.4 Controller层
从url中接收两个参数,调用Service进行校验,在调用Service之前,先对参数进行校验,例如type必须是1、2、3其中之一。
返回TaotaoResult。需要支持jsonp。
=======================================
参考资料:
未完待续。。。
原文地址:https://www.cnblogs.com/MarlonKang/p/11718009.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- RSA 敏感数据加解密方案
- 极客算法训练笔记(一),算法学习方法篇
- 链表:听说用虚拟头节点会方便很多?
- 从JVM设计者的角度来看.class文件结构,一文弄懂.class文件的身份地位
- 抓包分析UDP,TCP和UDP的区别说不上五条就进来看看吧
- 学习|C#线程中AutoResetEvent的使用
- Httprouter—用go实现的高性能路由器
- Django-python最流行的web框架
- C++ 类的不同构造与三种引用
- C++继承、虚函数、RTTI、友元类、异常处理
- C++基本语法
- 抓包分析TCP三次握手四次挥手全过程,教你观看“多包运动”的正确姿势
- 抓包分析以太网帧和IP数据包,头部那么多东东用来干啥的,扫盲篇
- 一文洞悉 OSI和TCP/IP模型,理通所有协议,再也不用似懂非懂了
- 图解https演变以及各种加密解密过程一篇就够!(通俗易懂白话文)