node权限管理(jsonwebtoken)
1.生成token返回前端保存
const jwt = require('jsonwebtoken') const cert = fs.readFileSync('./key.key') let payload = { user: '', admin:2,//1普通用户,2管理员 time: '' } payload.user = name payload.time = new Date() // 返回token前端 let token = jwt.sign(payload, cert, { algorithm: 'RS256', expiresIn: '60000s' })
2.用户接口权限管理(请求默认添加user_id)
if(filter.checkUrl(userUrl,ctx.request.url)){ //校验是否已登录-加user_id if(userData.id){ //管理员不用加 if(userData.admin!==2){ //操作 if(['DELETE','PUT','POST'].includes(ctx.request.method)){ ctx.request.body.user_id = userData.id } //列表 if(['GET'].includes(ctx.request.method)){ ctx.request.query.user_id = userData.id } } }else{ ctx.body = CommonSend.errLogin('请登录') return } }
3.管理员接口权限控制(判断token的admin是否等于2)
if(filter.checkUrl(['admin/'],ctx.request.url)){ if(userData.admin&&userData.admin!==2){ ctx.body = CommonSend.errLogin('没有管理员权限') return } }