Java如何实现Token登录验证


这篇文章主要介绍“Java如何实现Token登录验证”,在日常操作中,相信很多人在Java如何实现Token登录验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现Token登录验证”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!在介绍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通俗地说,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这里进行测试,所以用户类只有用户名密码,自行创建1、annotation包
PassToken:UserLoginToken:2、common包
CodeMsg:Result:3、config包
InterceptorConfig:4、Interceptor包
AuthenticationInterceptor:5、utils包
TokenUtil:6、pojo包
User:7、controller包
UserController:8、service包
UserService接口:UserServiceImpl实现类:TokenService:9、mapper包1、登录验证2、查询用户信息
这个方法加上了@UserLoginToken,所以要token才能查询3、不加上Token进行测试就会出错提示出错提示:到此,关于“Java如何实现Token登录验证”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: php如何将16进制转为浮点数

本篇内容主要讲解“php如何将16进制转为浮点数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何将16进制转为浮点数”吧! php将16进制转为浮点数的方法:1、使用“hexdec(十六进制值)”或者“ba…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/23 16:06
下一篇 05/23 16:07

相关推荐