egg签发令牌token
2019-08-14 本文已影响0人
divcssjs
egg框架搭建好
在router.js中配置几个路由
常用的配置:config文件夹下
1.关闭安全策略,才可以使用post请求
2.调大上传限制 防止大文件图片上传不了
3.jwt 令牌的配置项之一
// config.default.js
const config = exports = {
security: {//关闭安全策略 开启post之旅
csrf: {
enable: false,
},
},
bodyParser: {//解除文件上传大小限制
jsonLimit: '100mb',
formLimit: '100mb',
},
jwt: { //令牌配置项
secret: "123456"
}
};
config.middleware = ['jwtErr'];
plugin.js配置
1.第一个是关于mysql的插件,很方便
2.令牌配置项之一
3.此文件里的package的值都是依赖,要下载
module.exports = {
mysql: {
enable: true,
package: 'egg-mysql',
},
jwt: {
enable: true,
package: 'egg-jwt',
}
};
app文件夹下新建立文件夹middleware
内部新建js jwtErr.js
在第一块代码块中 会注册这个js
module.exports = (options, app) => {
return async function (ctx, next) {
try {
await next();
} catch (e) {
ctx.status = 401;
ctx.body = {
msg: '身份过期,重新登录',
code: -1,
}
}
}
}
在需要的路由上设置app.jwt
设置了的路由会根据令牌的有效时间对你次路由内的请求做判断,失效就不能请求,返回401,需重新登录,获取新的token值
router.get('/getaside', app.jwt, controller.home.getaside.getaside);//获取后台侧栏数据
注意:你发的请求必须有请求头,属性为Authorization
,值是登录成功获取的token
所以有必要封装有个axios,官方网站上有请求拦截的介绍,只需return一个header头,带上egg-jwt的专属请求头即可
还有一点:egg-jwt的创建令牌方法:
const token = app.jwt.sign({ foo: 'bar' }, app.config.jwt.secret);
// 返回给前端 存本地 发请求时带上请求头
这个令牌第一个参数可以把账号密码的对象穿进去,{user:admin,pwd:123456},就像这样
返回给前端 存本地 发请求时带上请求头
返回给前端 存本地 发请求时带上请求头
返回给前端 存本地 发请求时带上请求头