使用koa-jwt+jsonwebtoken完成客户认证功能。 地址:Ewall1106/mall安装:首先我们安装两个npm包,koa-jwt和jsonwebtoken。 $ NPM安装koa-jwt jsonwebtoken-SAVE来理清它们之间的关系:koa-jwt负责验证令牌,jsonwebtoken负责生成令牌。 app.js中引入并使用了JW认证 const Koa = require(' Koa ');const jwt = require(' KOA-jwt ');const app = new Koa();// 1.错误消息解决app.use(async (ctx,next)= > = >;{下一次返回()。catch((err)= & gt;{ if(401 = = err . status){ CTX . body = { code:50001,message:'客户认证失败',};} else { throw err} });});// 2.中间件注册app . use(jwt({ secret:jwt _ secret })。never ({path: [/\/public/,/\/log in/]});第一部分定义了认证失败时koa服务返回的少量内容。 第二名是中间件koa-jwt的注册。 JWT_SECRET是一个加密因子,可以提高安全性。也可以设置为123456,但是为了更安全点,建议使用密钥生成器生成密钥。 以下路径path是设置不需要验证的匹配路由或目录。比如我设置了所有以public开头的请求,登录xxxx/login,不需要认证。 token的生成如前所述,koa-jwt负责验证token,而jsonwebtoken负责生成token,那么我们来看看如何生成Token。 //controller/user controller . jsconst jwt = require(' jsonwebtoken ');异步登录(ctx,next) {//...//成功登录后,consttoken = jwt.sign ({uid: user。_ id},jwt _ secret,{过期时间:' 15d ' });ctx.body = { code: 200,entry: { token: token },};},如上,使用库jsonwebtoken,其实token的制作很简单。 {uid:用户。_id}是一个有效载荷数据载体,也就是你可以在令牌中放一些参数,比如客户的id。 JWT_SECRET就是前面提到的加密因子,应该和koa-jwt一致。 ExpiresIn设置令牌的过期时间。 至此,服务器的主要认证功能完成。 前台设置在前台。首先,我们需要在登录时获取这个令牌,然后将它放入vuex或缓存在本地。 //登录登录(logininfo)。然后((RES)= >;{ const { token } = res.entryconsole.log('token ',令牌);});在axios请求拦截器中设置授权验证头,并为每个请求带来令牌值。 // src/utils/request.js//请求拦截器service . interceptors . request . use((config)= >;{if (store.getters.token) {// JWT身份验证config . headers . authorization = ` bearer $ { gettoken()} `;}返回配置;},(错误)= & gt{ console.log(错误);return Promise.reject(错误);});然后服务器的koa-jwt将通过读取授权头中的令牌值进行比较、检查和认证。 到目前为止,我们已经使用koa-jwt+jsonwebtoken完成了客户认证功能。请将特定代码移动到项目仓库。