1.0.3 • Published 4 years ago

middlewarsa v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

//config.default.js

config.middleware='jwt' config.jwt =writeListData //login.js const jwd =require("jsonwebtoken") let token =jwt.sign({/查询数据库全表的数组/ ...searchRes0},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 抛出白名单数组