栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

项目中登录业务流程的原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目中登录业务流程的原理

一.项目中常见的登陆方式: 1. 账号密码登录

在用户点击登录时,收集用户输入的账号和密码,发送给后端与数据库中的数据对比验证,比较用户是否存在,密码是否正确;都 OK 就向用户发送登陆成功的信号和用户信息

2. 手机验证码登录、邮箱登录

用户点击发送验证码,前端就把手机号传给后端,让后端生成一个随机数 ,然后把手机号码和完整的短信内容发送给第三方短信平台,在第三方短信发送成功的回调里把手机号和随机数储存到数据库中;用户收到短信后点击登录,前端收集手机号和验证码传给后端和数据库进行对比,验证成功就返回登录成功和用户信息等

3. 第三方登录(微信)

第三方账号登录都需要去申请授权;
用户点击第三方登录时,前端调用接口获取第三方登录页面的链接地址(拼接了后端加密过后的签名、登录成功后的回跳地址(redirect_uri)等)
比如点击QQ登录的话,就直接跳转到后端返回的第三方登录链接

二.验证登录方式的方法
  • cookie + Session
  1. 首次登录验证成功之后,后端会创建一个 Session 对象并保存到缓存或者数据库里
  2. 然后在响应登录接口的响应头里,设置 Set-cookie 字段,并把 SessionId 等信息写入进去,并设置过期时间,这些信息就是 cookie,然后浏览器会保存这些 cookie 信息
  3. 之后再发送请求的时候,如果当前域名有保存 cookie 信息的话,浏览器会自动在请求头上添加 cookie 字段,并带上保存的 cookie 信息
  4. 然后后端接收到请求后,会把请求头中的 cookie 信息提取出来和存在服务器的对应的 Session 信息作对比,如果一致就说明登录验证成功了,不需要再重复登录
  • Token
  1. 首次登录验证成功之后,后端一般使用JWT 将用户信息、签名等加密生成一串字符串,存到数据库并返回给前端
  2. 前端再存起来,存在cookie、SessionStorage、LocalStorage都可以
  3. 之后再次请求时浏览器也不会默认携带,需要我们自己在请求拦截器里添加请求头,把 Token 信息带上
  4. 然后后端就拿到 Token 信息来查找数据库里有没有,如果有再执行查询数据库操作等返回前端请求的数据,因为设置了过期时间的话,时间到了Redis会自动就删掉数据库里的 Token,查询就不会有。当然也有人是开定时任务去删
特点:
  1. 更安全:因为可以不用发送 cookie 了,能够·避免 CSRF 攻击`。也不需要操作 Session 了
  2. 多服务器方便共享:前后端代码文件等资源放在不同的服务器,请求时都能获取到正确的登录状态
三.单点登录-Single Sign On(SSO) 1.概念

指在多系统应用群中登录一个系统,那么其他所有系统都得到授权都无需再次登录;避免了一个一个登录、然后一个一个注销 简单点就是在一个应用注册的账号可以同时在多个应用上登陆

2.同域下实现SSO

比如百度(baidu.com)、百度网盘(pan.baidu.com)、百度贴吧(tieba.baidu.com)、百度地图(map.baidu.com).这些都是在同一域名下,要实现在百度上登录、注册成功后,在百度地图或百度贴吧上也能显示已登录

方法:
  1. 首先需要把 cookie 设置给顶级域,这样子他下面所有的子域都可以访问他的 cookie
  2. 然后通过 Redis、Tomcat 等,都可以把 Session 设置成在这几个域名里共享
3.不同域下实现SSO

比如淘宝(taobao.com)、天猫(tmall.com)、支付宝(alipay.com)、阿里巴巴(1688.com)…
需要一个独立的能够统一管理或者共享这些状态信息的 认证中心(CAS),也就是SSO登录系统


copy网站:
https://mp.weixin.qq.com/s/S56OCF85YyPI-HtotP6w_g

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273341.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号