xmall商城学习笔记

文章目录

  • xmall商城学习笔记
  • 前言
  • 一、单点登录是什么?
  • 二、项目结构
  • 总结

前言

提示:今天要看的xmall-sso,单点登录模块

一、单点登录是什么?

简单讲就是在一个系统(模块中登录)其他模块或系统都可以访问,无需在登录
这边有一篇文章讲的很透彻:单点登录的原理

我们这边主要来研究xmall是如何实现的,并且对它优化

二、项目结构


很明显这是一个服务,他是注册到zookeeper中的
我们主要看service ,它下面又三个文件比较重要
LoginServiceImpl、MemberServiceImpl、RegisterServiceImpl
RegisterServiceImpl 里是注册账号的,就是对数据库的查找和插入,这个不难。

我们来看LoginServiceImpl这个类,它只有三个方法userLogin、getUserByToken、logout
先看第一个方法

List<TbMember> list = tbMemberMapper.selectByExample(example);if (list == null || list.size() == 0) {Member member=new Member();member.setState(0);member.setMessage("用户名或密码错误");return member;}TbMember tbMember = list.get(0);//md5加密if (!DigestUtils.md5DigestAsHex(password.getBytes()).equals(tbMember.getPassword())) {Member member=new Member();member.setState(0);member.setMessage("用户名或密码错误");return member;}String token = UUID.randomUUID().toString();Member member= DtoUtil.TbMemer2Member(tbMember);member.setToken(token);member.setState(1);// 用户信息写入redis:key:"SESSION:token" value:"user"jedisClient.set("SESSION:" + token, new Gson().toJson(member));jedisClient.expire("SESSION:" + token, SESSION_EXPIRE);

这段代码是核心了,主要就是去数据库查找用户,如果没有就抛异常,如果有就把生成token 存放到redis中并且设置过期时间。
代码如下(示例):

getUserByToken 这个方法就是用来验证登录状态的根据Token
然后“充值”过期时间

String json = jedisClient.get("SESSION:" + token);if (json==null) {Member member=new Member();member.setState(0);member.setMessage("用户登录已过期");return member;}//重置过期时间jedisClient.expire("SESSION:" + token, SESSION_EXPIRE);Member member = new Gson().fromJson(json,Member.class);return member;

logout 就两行代码
清空redis登录信息

jedisClient.del("SESSION:" + token);return 1;

MemberServiceImpl 这个类就一个方法imageUpload,用来更新头像的

总结

文章到这儿还远远没有结束,这么项目我们知道它用来shiro鉴权框架,那它和登录又什么关系呢?还有网上很火的JWT是什么呢?xmall的思路是不是和他们一致呢?后面我会修改这个项目的登录实现。

xmall商城学习笔记 登录相关推荐

  1. 淘淘商城学习笔记 之 上传图片到远程服务器,图片的回显出现的bug

    最近在学习淘淘商城中用到的技术,感觉受益良多,遇到一个比较奇怪的bug调了好久,遂心乐之分享于诸君 bug情况是这样的:在商城的后台上传图片之后图片回显不出来,右键查看链接,发现链接被加了localh ...

  2. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

  3. 2022谷粒商城学习笔记(二十二)rabbitMQ学习

    前言 本系列博客基于B站谷粒商城,只作为本人学习总结使用.这里我会比较注重业务逻辑的编写和相关配置的流程.有问题可以评论或者联系我互相交流.原视频地址谷粒商城雷丰阳版.本人git仓库地址Draknes ...

  4. 2022谷粒商城学习笔记(二十三)分布式事务

    前言 本系列博客基于B站谷粒商城,只作为本人学习总结使用.这里我会比较注重业务逻辑的编写和相关配置的流程.有问题可以评论或者联系我互相交流.原视频地址谷粒商城雷丰阳版.本人git仓库地址Draknes ...

  5. 乐优商城学习笔记五-商品规格管理

    0.学习目标 了解商品规格数据结构设计思路 实现商品规格查询 了解SPU和SKU数据结构设计思路 实现商品查询 了解商品新增的页面实现 独立编写商品新增后台功能 1.商品规格数据结构 乐优商城是一个全 ...

  6. 乐优商城学习笔记十九-商品详情(二)

    2.页面静态化 2.1.简介 2.1.1.问题分析 现在,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端.在后台需要大量的数据查询,而后渲染得到HTML页面.会对数据库造成压力,并且请求 ...

  7. 分布式电商项目 谷粒商城 学习笔记<2>

    文章目录 六.三级分类 1.按照父子类的结构获取所有分类 2.跨域问题的解决 1.使用nginx部署为同一域 2.让服务器告诉预检请求能跨域 3.过滤器优先级问题 4.删除 5.增加修改拖拽 七.品牌 ...

  8. 谷粒商城学习笔记(2)-- 环境搭建项目结构创建

    一.环境 虚拟机ip192.168.174.128 本地ip192.168.31.14 本地和虚拟机要互相ping通 二.Docker 虚拟化容器技术.Docker基于镜像,可以秒级启动各种容器.每一 ...

  9. SSM实战项目_青橙商城学习笔记和踩坑指南

    目的 本篇博客主要为了总结在学习开发实战项目中遇到的问题,提高自己的学习效率,也为其他遇到类似bug的后来者提供帮助. 2019/12/14.开篇就遇到tomcat启动问题:启动dubbo项目交替出现 ...

最新文章

  1. 【设计模式】业务代表模式
  2. 十四.200创业课程获得百万--不良,不要启动
  3. P4287-[SHOI2011]双倍回文【PAM】
  4. python在windows平台的多版本配置
  5. react http请求_React组件的应用分析
  6. freemaker转word xml注意事项
  7. Android.mk中call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)的区别
  8. express + uniapp发送图片和保存图片
  9. 开启JAVA死锁之迷
  10. DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade
  11. flowable 配置自定义表单_SpringBootSecurity学习(03)网页版登录添加自定义登录页面...
  12. python猜拳代码_猜拳代码python
  13. 电脑联网打不开网页只能用qq和微信
  14. 大学十年---林锐(转)
  15. JSP项目常见问题解决方案
  16. HTML中a标签的作用
  17. android手机能用ios吗,安卓手机真的可以刷苹果iOS系统吗?
  18. Pytorch安装(Anaconda配置虚拟环境)(cpu版)
  19. 算法 - 多目标优化的注意点及常用方法概述
  20. 近年创业目睹之怪现状

热门文章

  1. 安卓开发基础入门系列教程
  2. 智慧道路怎么建?看北京的现状与未来
  3. 阅读 | 《逻辑工作法》学习笔记
  4. 技术开创、优势沉淀|高通平台解决方案生态系统(PSE)计划,诚邀合作伙伴加入!...
  5. 日语助词は的语法汇总
  6. vulnhub靶场——THE PLANETS: MERCURY
  7. java高级:Scanner和String类介绍
  8. 基于Halcon学习的一维码识别【八】barcode.param_meas_thresh_abs.hdev
  9. BugKu -- AWD --S1排位赛-1
  10. 拇信创始人刘顺心荣获 “信用中国·(行业)十大创新人物奖”