主流的前后端分离项目中用户鉴权最常用的是目前最流行的跨域认证解决方案---JWT(JSON WEB TOKEN)

一、JWT工作原理

图解:

用户的信息通过Token字符串的形式保存在客户端浏览器中。

服务器通过解析Token字符串的形式来认证用户的身份。

二、JWT组成

JWT通常由三部分组成,分别是Header (头部)、Payload (有效荷载)、Signature (签名)。
三者之间使用英文的"." 分隔,格式如下:

Payload 部分才是真正的用户信息,它是用户信息经过加密之后生成的字符串。
Header 和Signature是安全性相关的部分,只是为了保证Token的安全性。

三、运行流程

首先浏览器客户端收集账号和密码存放到HTTP请求体中并向后端服务器发起登录请求

服务器接收到请求,获取到HTTP请求体中的账号和密码到数据库去验证用户和密码是否正确

服务器验证成功后,服务器会根据用户的信息进行生成该用户的token字符串并通HTTP响应体将该token字符串返回给客户端浏览器

客户端通过HTTP响应体获取Token字符串后可以把它存储在浏览器客户端中,比如Cookie或者LocalStorage里

登录成功之后客户端每次向后端服务器请求资源的时候都需要带上客户端浏览器存储的Token,一般把token字符串通过挂载在HTTP请求头中的Authorization属性中进行发送给后端服务器

后端服务器接收到请求,首先会对请求进行拦截,验证客户端请求头里的Token,如果验证成功,就会向客户端返回请求的数据,如果未携带token或者token失效,就会向客户端返回http401状态码

四、优缺点

优点:

  • 不需要在服务端保存会话信息,服务器的存储压力不大
  • JWT 中的 Payload 负载可以存储常用信息,用于信息交换,有效地使用 JWT,可以降低服务端查询数据库的次数

缺点:

  • 加密问题: JWT 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次。
  • 到期问题: 由于服务器不保存 状态,因此无法在使用过程中废止某个 Token,或者更改 Token 的权限。也就是说,一旦 JWT 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。

项目中的用户鉴权是如何实现的?相关推荐

  1. 在docker容器中操作es,并给es7.6添加用户鉴权设置密码

    1.docker启动命令:docker-compose up -d 加上 -d 表示后台运行,只是docker-compose up则是在控制台运行,会不停的打印日志. 2.从容器中拷贝文件到宿主机: ...

  2. SpringBoot项目的用户鉴权分析

    一.鉴权类:UserAuthFilter springBoot被称为开箱即用,是因为许多代码都帮开发者实现了,就连用户鉴权部分都帮我们写好了,如需自定义过滤器,则继承UserAuthFilter类即可 ...

  3. No6-6.从零搭建spring-cloud-alibaba微服务框架,添加用户鉴权逻辑,动态数据权限(使用AOP实现)等(六,no6-6)

    代码地址与接口看总目录:[学习笔记]记录冷冷-pig项目的学习过程,大概包括Authorization Server.springcloud.Mybatis Plus~~~_清晨敲代码的博客-CSDN ...

  4. 测试开发【Mock平台】04实战:前后端项目初始化与登录鉴权实现

    [Mock平台]为系列测试开发教程,从0到1编码带你一步步使用Spring Boot 和 Antd React 框架完成搭建一个测试工具平台,希望作为一个实战项目能为你的测试开发学习有帮助. 一.后端 ...

  5. labview的用户身份认证系统设计_elasticsearch 集群身份认证与用户鉴权

    elasticsearch在默认安装后,没有提供任何安全保护. 在elasticsearch.yml配置了server.host=0.0.0.0导致公网可以访问es集群. 数据安全的基本需求: 1.身 ...

  6. 用户鉴权、JWT(JSON Web Token)是什么?

    什么是用户鉴权 用户鉴权,一种用于在通信网络中对试图访问来自服务提供商的服务的用户进行鉴权的方法.用于用户登陆到DSMP或使用数据业务时,业务网关或Portal发送此消息到DSMP,对该用户使用数据业 ...

  7. 关于feign开启hystrix导致用户鉴权失败

    关于feign开启hystrix熔断导致用户鉴权失败的原因是: feign的hystrix熔断默认机制是线程池隔离.而代码在获取用户权限信息时又是线程池处理,所以导致每次获取用户信息为null. 处理 ...

  8. 亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像)

    亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像) 大噶好,我们继续延续上一章,学习如何使用OSS存放用户头像代码示例; 在application.propert ...

  9. Vue项目中实现用户登录及token验证

    一.什么是token token的意思是"令牌",是服务端生成的一串字符串,作为客户端进行请求的一个标识.当用户第一次登录后,服务器生成一个token并将此token返回给客户端, ...

最新文章

  1. python异步封装_python中用协程(异步)实现map函数,爬虫也可以封装进去,
  2. 转: 通过Servlet生成验证码图片
  3. C#.NET 添加图片水印
  4. 确认对话框ConfirmDialog和选择对话框OptionDialog
  5. 日志中的秘密 Windows登录类型都有哪些
  6. sscanf()函数的用法
  7. 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录
  8. 带弹簧的Hazelcast分布式执行
  9. 远程执行漏洞修复方案_请马上修复!SaltStack远程命令执行漏洞
  10. 使用jieba和wordcloud进行中文分词并生成《悲伤逆流成河》词云
  11. android中显示提示图标在edittext左侧,设置图标的大小,王立平--EditText实现单行显示,左側图标,提示信息...
  12. 行走在消逝中[LoLi有三好]
  13. Axure RP 8 Pro 破解版软件安装包
  14. CreatePipe
  15. ufs 固态硬盘_看够了UFS/eMMC纠纷 再看笔记本固态硬盘速度的区别吧
  16. Java组合模式(Composite)
  17. 后门准则(Backdoor Criterion)与前门准则(Frontdoor Criterion)
  18. spark-streaming从入门到精通
  19. 一文搞懂考研数列极限问题(概念/计算/证明)史上最强/最全总结
  20. python 键盘输入数字_python实现键盘输入的实操方法

热门文章

  1. TI四芯片级联雷达评估板-校准
  2. ocr图文识别工具Text Scanner for Mac
  3. UC浏览器电脑板书签栏消失如何恢复?
  4. android浏览器400错误代码,console.log在谷歌浏览器和Android浏览器的本地代码错误...
  5. 2020-10-26可转债新规
  6. 微信QQ等主流应用上线国产系统UOS:界面曝光
  7. 散列 pat1134
  8. php朋友圈九宫格怎么做,微信朋友圈九宫格视频怎么做 图片背景加九宫格视频随机播放的效果制作|微信九宫格视频...
  9. 怎么把太大的ppt文件压缩变小
  10. 游戏的角色模型是如何创建的?ZBrush中制作3D兽人,全流程解析