koa实现登录jsonwebtoken验证demo

koa实现登录jsonwebtoken验证demo

1:使用中间件jsonwebtoken

2:将username或者usserid保存

3:生成token 并设置过期时间

4:最后再次访问服务器验证token

const koa = require('koa');
const bodypaser = require('koa-bodyparser');
const jswt = require('jsonwebtoken'); // 生成token 
const Router = require('koa-router');
const static = require('koa-static');
// const koajwt = require('koa-jwt');

const app = new koa()
const router = new Router();

var products = [{
    productNamt: 'yyc',
    price: 200,
    dec: '我们的产品的相当好'
}, {
    productNamt: 'yyc',
    price: 200,
    dec: '我们的产品的相当好'
}, {
    productNamt: 'yyc',
    price: 200,
    dec: '我们的产品的相当好'
}]
router.post('/login', async (ctx, next) => {

    let { username, password } = ctx.request.body

    if (!username || !password) {
        return ctx.body = {
            code: '02',
            data: null,
            msg: "参数不合法"
        }
    }
    // 生成token 
    var token = jswt.sign({
        name: username,// token 的主题 一般用来存用户 用户id
    }, 'my_token', {// my_token 是秘钥
        expiresIn: 1000*60*60*10 // 设置token的过期时间 
    })
    console.log('token=====服务器生成的', token);
    ctx.body = {
        code: '01',
        data: token,
        msg: "登录成功"
    }

})
// 获取商品列表;验证touken 
router.get('/product', async (ctx) => {
    // 1: 接收客户端发过来的token 
    let { token } = ctx.query
    console.log(token,'=================客户端发送的');
    // 2:验证token 
    // verify() 验证token 参一:token 参二:秘钥;参三: 回调函数;有验证结果
    jswt.verify(token, 'my_token', function (err, res) {
        if (err) {
            // 5:验证失败,告诉浏览器没有权限 
            return ctx.body = {
                code: '02',
                msg: '该用户没有权限'
            }
        }
        console.log(res,'========== 解密后token');// 解密的结果
        // 3 验证验证通过后;返回商品列表

        ctx.body = {
            code: '01',
            data: products,
            msg: "success"
        }

    })


})


app.use(bodypaser())
app.use(static('www', {
    index: 'login.html'
}))
app.use(router.routes());
app.listen(3000)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值