1. 前言
对于身份验证,传统来说,我们使用的是session。但是使用session会增加服务器的压力,并且不适合于今日的分布式集群开发。于是我们倾向于使用token。
1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
2. 后端编写token
我们要使用JWT来生成token,因此我们需要引入JWT依赖。
2.1 加入依赖
在父pom和user微服务的pom文件中加入(user的pom里不要带版本号)
2.2 编写token代码
在user微服务中src/main/java/com.user新建utl文件夹,在此新建TokenUtil.java文件
里面有生成的方法和检测的方法。
2.3 修改UserController文件login方法
其实对比来看,只是添加了
生成token,将token传到前端
3. 前端引入Vuex,编写store文件
我们需要建一个文件,来保存token信息,来作为一个全局变量,于是vue的store上场了。store需要用的Vuew,因此我们需要先下载Vuex。
3.1 下载Vuex
3.2 新建store
在 src 目录下新建一个文件夹 store,并在该目录下新建 index.js。在这个文件中,我们来保存全局变量。
可以看到,我们保存了三个变量:userName,Authorization,signTime。
其中userName就是用户登录时的用户名,Authorization保存的是token,这是http请求头中的一个关键字。
signTime:我们保存的是token的生成时间,未来我们将在前端来验证token是否过期。
3.3 修改main.js代码
加入以下代码
3.4 修改login.vue
4. 测试
运行后端服务,以及打开登录界面,进行登录
第三行的长字符串就是生成的token
前端控制台打印的字符串就是从后端传过来的token信息。