• JWT登录校验


    工作原理
    下面来详细看看 UTF-8 是如何工作的,以及为什么它会根据被编码的字符具有不同的长度。
    一、JWT是什么?
    在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流程:
    1、客户端使用用户名和密码请求登录

    2、服务端收到请求,验证用户名和密码

    3、验证成功后,服务端会签发一个token,再把这个token返回给客户端

    4、客户端收到token后可以把它存储起来,比如放到cookie中

    5、客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带

    6、服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求数据

    这种基于token的认证方式相比传统的session认证方式更节约服务器资源,并且对移动端和分布式更加友好。其优点如下:

    支持跨域访问:cookie是无法跨域的,而token由于没有用到cookie(前提是将token放到请求头中),所以跨域后不会存在信息丢失问题
    无状态:token机制在服务端不需要存储session信息,因为token自身包含了所有登录用户的信息,所以可以减轻服务端压力
    更适用CDN:可以通过内容分发网络请求服务端的所有资料
    更适用于移动端:当客户端是非浏览器平台时,cookie是不被支持的,此时采用token认证方式会简单很多
    无需考虑CSRF:由于不再依赖cookie,所以采用token认证方式不会发生CSRF,所以也就无需考虑CSRF的防御

    而JWT就是上述流程当中token的一种具体实现方式,其全称是JSON Web Token,官网地址:https://jwt.io/

    通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输。JWT的认证流程如下:

    1、首先,前端通过Web表单将自己的用户名和密码发送到后端的接口,这个过程一般是一个POST请求。建议的方式是通过SSL加密的传输(HTTPS),从而避免敏感信息被嗅探

    2、后端核对用户名和密码成功后,将包含用户信息的数据作为JWT的Payload,将其与JWT Header分别进行Base64编码拼接后签名,形成一个JWT Token,形成的JWT Token就是一个如同lll.zzz.xxx的字符串
    3、后端将JWT Token字符串作为登录成功的结果返回给前端。前端可以将返回的结果保存在浏览器中,退出登录时删除保存的JWT Token即可

    4、前端在每次请求时将JWT Token放入HTTP请求头中的Authorization属性中(解决XSS和XSRF问题)

    5、后端检查前端传过来的JWT Token,验证其有效性,比如检查签名是否正确、是否过期、token的接收方是否是自己等等

    6、验证通过后,后端解析出JWT Token中包含的用户信息,进行其他逻辑操作(一般是根据用户信息得到权限等),返回结果

    最后:说白了,JWT:JSON Web Token,其实token就是一段字符串,由三部分组成:Header,Payload,Signature

  • 相关阅读:
    Python 图_系列之基于<链接表>实现无向图最短路径搜索
    【更新】囚生CYの备忘录(202331014~)
    动态改变列数做分页
    cmake入门
    SpringMVC:从入门到精通,7篇系列篇带你全面掌握--七.自定义注解
    LeetCode:326(Python)—— 3 的幂
    ChatGPT/GPT4科研技术与AI绘图及论文高效写作
    Linux下安装Mysql5.7,超详细完整教程,以及云mysql连接
    unity实现Perlin噪声
    【开源】基于Vue.js的社区买菜系统的设计和实现
  • 原文地址:https://blog.csdn.net/weixin_43818835/article/details/134244395