cnpm i egg-jwt --save
使用jwt需要配合cors来配置跨域请求否则会报错 message: “invalid csrf token”
cnpm install egg-cors --save
安装好过后在config文件夹面配置
plugin.js文件里
module.exports = {
jwt: {
enable: true,
package: 'egg-jwt',
}
};
config.default.js文件里
//cors跨域配置
config.security = {
csrf: {
enable: false,
},
domainWhiteList: ['*'], //允许访问域名的白名单,*表示都能访问
};
config.cors = {
origin: '*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS', //允许请求的方法
};
//jwt鉴权配置
config.jwt = {
secret: '123456', // token的加密的密钥,自己随便设置
};
app/controller/user.js
const Controller = require('egg').Controller;
class UserController extends Controller {
//登录并生成token
async login() {
//获取用户通过post请求传过来的参数
const {
ctx,
app
} = this
const data = this.ctx.request.body
if (data.userName == 'woshigezhu' && data.password == '123456') {
// 通过jwt生产token
const token = app.jwt.sign({
userName: data.userName, //需要存储的Token数据
}, app.config.jwt.secret, {
//app.config.jwt.secret是在配置里配置的密钥'123456'
expiresIn: 60 * 60 * 24 //expiresIn是token过期时间
});
// 返回token
ctx.body = {
code: 0,
token,
}
} else {
ctx.body = {
code: -200,
message: "账号或密码错误"
}
}
}
}
module.exports = UserController;
app/router.js
module.exports = app => {
const {
router,
controller
} = app;
//用户登录接口
router.post('/user/login', controller.user.login); //调用控制器里home文件中的login方法
}
我这里用postman来请求刚刚写好的login接口
请求地址: http://127.0.0.1:7001/user/login
请求参数:{userName : " " , password : " " }
输入正确的账号密码,返回了token,接下来就能用拿到的token做请求验证了
下一篇:egg.js配合mysql的token验证请求进阶