安装egg-jwt
npm install --save egg-jwt
在plugin.js引入
module.exports = {
jwt:{
enable:true,
package:'egg-jwt'
},
}
配置config.default.js文件,设置serect(密钥)
config.jwt={ secret:"xxxx"};
生成token 例:创建app/controller/jwt.js文件
const Controller = require('egg').Controller
class JwtContrall extends Controller{
async index(){
let user ={
name:"小黑"
}//定义一个加密对象
let token = this.app.jwt.sign(user,this.app.config.jwt.secret)
//签发token
this.ctx.body=token
}
token
校验token
async index(){
let user ={
name:"小黑"
}//定义一个js对象来生成token
let token = this.app.jwt.sign(user,this.app.config.jwt.secret)
//签发token
// this.ctx.body=token
let decode = this.app.jwt.verify(token, this.app.config.jwt.secret)
this.ctx.body = decode
}
例:
前端请求代码
export default {
data() {
return{
user:{
username:"",
password:""
}
}
},
methods:{
jwtlogin(){
axios.post(`http://127.0.0.1:7001/jwtlogin`,{
user:this.user
}).then((res)=>{
if(res.data.code===2000){
let token = res.data.token
localStorage.setItem("token",token)
this.$router.push("/")
}else{
this.$router.push("/jwtlogin")
}
})
},
logout(){
localStorage.clear()
location.reload()
}
}
}
--------------------------------
methods:{
getmessage(){
let token = localStorage.getItem("token")
axios.get("http://127.0.0.1:7001/getmessage",{headers:{token:token}}).then(
(res)=>{
let head =res.data
console.log(head)
})
}
}
后端代码
//路由
router.post('/jwtlogin',controller.jwt.jwtlogin);
router.get('/getmessage',app.middleware.checktoken(),controller.jwt.getmessage)
//controller层
async getmessage(){
let token = this.ctx.request.header.token
try {
let decode = this.app.jwt.verify(token,this.app.config.jwt.secret)
this.ctx.body = true
} catch (e) {
this.ctx.body = "验证未通过"
}
this.ctx.body=true
}//检查请求头
async jwtlogin(){
let user = this.ctx.request.body.user;
// let jwttoken={username:user.username};
if (user.username==="111"&&user.password==="123") {
let token = this.app.jwt.sign(user, this.app.config.jwt.secret);
this.ctx.body = {
code:2000,
token:token
}
} else {
this.ctx.body={
code:3000,
message:"密码错误"
}
}
}