美文网首页Java webMiners-ICU
服务端的登陆验证方式

服务端的登陆验证方式

作者: Sober_清醒 | 来源:发表于2020-03-07 02:13 被阅读0次

    服务端的登陆验证方式

    刚入门的萌新肯定都有一个疑问,登录方式难道只能用Session么,那么如果不是Web项目该怎么办呢。

    这篇文章将带你了解:JWT的token验证,通过Redis代替Session验证,还有最基本的Session验证。

    正文

    了解Session的登录验证方式(只能用于Web)

    Session是什么

    • 用来维护服务器和浏览器用户之间的状态联系
    • Session的主要目的就是为了弥补Http的无状态特性

    Session是如何验证用户状态的

    在Java Web项目中用户登录成功会生成一个Session,这个Session会存储在服务端然后返回给浏览器,浏览器也会将Session存储起来。

    在用户第二次请求的时候,浏览器会携带Session发送给服务端请求,这时候拦截器会验证Session是否存在,存在则是登录状态,不存在则是未登录。

    • 如果看不懂的话看下图
    login1

    了解Redis的登录验证方式(通用)

    Redis是什么

    • Redis是一个基于内存的是数据库
    • Redis可以设置数据的过期时间
    • 字典型数据库

    如何使用Redis来验证用户的登录状态

    • 这里我们使用Redis和Session的本质上是一样的,但是我们需要做的工作会更多。。
    • 我们需要做什么
      • 需要自己生成每个用户唯一的密匙(如UUID)
      • 需要将密匙存储与Redis中
      • 需要自行将密匙放在cookie或直接返回给前端
      • 浏览器接收到密匙,将密匙存储到Cookie或者其他的存储方式
      • 浏览器每个请求都需要带上密匙
      • 服务端接收到请求,需自行验证请求中的密匙与服务端存储的密匙

    这里的流程和Session基本一致,只不过我们需要做更多的工作了,就不放图了。

    JWT的Token验证方式(本文要点)(通用)

    这是我个人比较喜欢的一种方式

    什么是JWT

    • JSON Web Token == JWT(它主要包含了以下信息)

      • 发行人
      • 到期时间
      • 数据(如用户信息)
    • JWT最终会将所以数据哈希化成为一串密文(即为Token)

    • 因为其自带到期时间,所以服务端一般无需保存Toekn

    • 但是服务端也无法管理用户的登录状态

    • 颁发以后一直有效,除非时间过期

    如何使用JWT来验证用户登录状态

    • 用户登录时使用用户的信息用JWT工具类生成 Token
      • 注意要设置过期时间
    • 将Token返回给前端浏览器
    • 浏览器接收到Token,将密匙存储到Cookie或者其它的存储方式
    • 浏览器每个请求都需要带上Token
    • 服务端接收到请求,使用JWT工具类验证 token是否是自己颁发的、或过期没有等等

    这里的流程和Session基本一致,就不放图了。

    总结

    基本的验证流程是一样的,只不过我们所做的工作不一样了。

    这里提一下适用范围:

    • Session只适用于web
    • Redis验证适用于APP、Web、桌面应用等等
    • JWT同上,当然token也可以用作信息交换

    相关文章

      网友评论

        本文标题:服务端的登陆验证方式

        本文链接:https://www.haomeiwen.com/subject/lhhxdhtx.html