middlewarsa
v1.0.3
Published
//config.default.js config.middleware=['jwt'] config.jwt =writeListData //login.js const jwd =require("jsonwebtoken") let token =jwt.sign({/*查询数据库全表的数组*/ ...searchRes[0]},app.config.keys) context.body ={code:0,msg:"登录成功",data
Downloads
6
Readme
//config.default.js
config.middleware=['jwt'] config.jwt =writeListData //login.js const jwd =require("jsonwebtoken") let token =jwt.sign({/查询数据库全表的数组/ ...searchRes[0]},app.config.keys) context.body ={code:0,msg:"登录成功",data:{token}}
//user.js
const Service = require('egg').Service; class UserService extends Service { async login(user) { return await this.app.mysql.select('hou',{where:{user}}) } async insertUser(user,pwd,role="访客") { return await this.app.mysql.insert('hou',{userid:null,user,pwd,role}) } } module.exports = UserService;
//jwt.js
const url = require('url') const jwt = require('jsonwebtoken') function verifyFunc(token,ctx){ return new Promise(res=>{ jwt.verify(token,ctx.app.config.keys,(error,result)=>{ if(error) throw error res(result) }) }) } module.exports = options=>{ return async (ctx,next)=>{ //判断前端请求路径 如果在白名单里 就不受限 if(options.includes(url.parse(ctx.url).pathname)){ await next() return } //获取token let token = ctx.get('authorToken')
//如果没有token
if(!token){
ctx.body = {code:1,msg:'没有访问权限,请登录'}
return
}
//有token
let info
try{
//去解密
info = await verifyFunc(token,ctx)
}
catch(error){
//解密失败
ctx.body = {code:1,msg:'权限无效,重新登录'}
return
}
//把解密出来的用户信息 挂载到全局上
ctx.info = info
await next()
} }
//writeList.js 抛出白名单数组