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
}
}
原文:https://www.cnblogs.com/fm060/p/14457276.html