token加密

该博客详细介绍了如何在Egg.js框架中安装和配置egg-jwt库,用于生成和验证JSON Web Token(JWT)。从安装依赖到设置密钥,再到创建签发和校验token的控制器方法,以及前端的登录和获取信息的接口调用,整个流程清晰明了,为读者提供了一个完整的JWT身份验证示例。
摘要由CSDN通过智能技术生成

安装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:"密码错误"
            }
        }     
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值