ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第十天(非原创)
文章大纲
一、课程介绍
二、单点登录系统分析
三、单点登录系统代码实战
四、项目源码与资料下载
五、参考文章
一、课程介绍
一共14天课程
(1)第一天:电商行业的背景。淘淘商城的介绍。搭建项目工程。Svn的使用。
(2)第二天:框架的整合。后台管理商品列表的实现。分页插件。
(3)第三天:后台管理。商品添加。商品类目的选择、图片上传、富文本编辑器的使用。
(4)第四天:商品规格的实现。
(5)第五天:商城前台系统的搭建。首页商品分类的展示。Jsonp。
(6)第六天:cms系统的实现。前台大广告位的展示。
(7)第七天:cms系统添加缓存。Redis。缓存同步。
(8)第八天:搜索功能的实现。使用solr实现搜索。
(9)第九天:商品详情页面的展示。
(10)第十天:单点登录系统。Session共享。
(11)第十一天:购物车订单系统的实现。
(12)第十二天:nginx。反向代理工具。
(13)第十三天:redis集群的搭建、solr集群的搭建。系统的部署。
(14)项目总结。
二、单点登录系统分析
1. 什么是SSO(单点登录系统)
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。
2. 传统的登录流程
3. 传统流程中的问题
在集群环境中。需要把同一套代码部署到多台服务器上。每个工程都有自己独立的session
在集群环境中每个工程都有自己的session,如果把用户信息写入session而不共享的话,会出现用户反复登录的情况。
4. 解决方案
4.1 第一种方案
可以配置tomcat的session共享。配置tomcat集群。Tomcat配置好集群后,会不停的向集群中其他的tomcat广播自己的session信息。其他的tomcat做session同步。可以保证所有的tomcatsession中的内容都是一致的。
优点:
不用修改代码就可以实现session共享
缺点:
tomcat 是全局session复制,集群内每个tomcat的session完全同步(也就是任何时候都完全一样的) 在大规模应用的时候,用户过多,集群内tomcat数量过多,session的全局复制会导致集群性能下降, 因此,tomcat的数量不能太多,5个以下为好。不能解决分布式工程的session共享问题。例如支付宝和淘宝单点登录的问题。
4.2 第二种方案
实现单点登录系统,提供服务接口。把session数据存放在redis。Redis可以设置key的生存时间、访问速度快效率高。
优点:
redis存取速度快,不会出现多个节点session复制的问题。效率高。
缺点:
需要程序员开发
5. 单点登录系统流程
三、单点登录系统代码实战
单点登录系统是一个独立的工程。需要操作redis、连接数据库
1. 系统架构
2. 创建taotao-sso的maven项目
创建方式可参考taotao-rest,具体创建后代码可以在项目源码与资料下载中进行学习
3. 编写业务逻辑
单点登录系统功能包括以下内容
(1)注册接口
需要对用户提交的数据做校验
对密码做md5加密
对报错异常要做处理
用户注册时需要调用taotao-sso的服务检查用户的有效性以及用户、手机是否存在。检查通过后提交表单至 taotao-portal的controller,由taotao-portal调用taotao-sso的服务注册用户。
(2)数据校验接口
(3)登录接口
前台页面提交用户名、密码至taotao-portal,由taotao-poratl调用sso系统的服务做登录处理。登录成功后返回用户token数据。taotao-portal把token写入cookie,返回登录成功。页面接收到成功信息后,跳转至商品列表页面。商品列表页面从cookie中取出token信息,根据token查询用户并显示到首页。
4. 拦截器使用
四、项目源码与资料下载
链接:https://pan.baidu.com/s/1b0jXrOiz8fpMX_HA3k072A
提取码:42c3