koa实现登录jsonwebtoken验证demo

偶尔善良 提交于 2020-02-22 22:43:54

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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!