用户鉴权 express-jwt 、jsonwebtoken的基本使用

1,579 阅读1分钟

1、express-session的使用

1、安装express-session

npm i express-session

2、引入express-session模块

const session = require('express-session')

3、注册中间件

session.use(session({
    secret: 'key',  //随机指定
    resave: false,  //固定写法
    saveUninitialized: true  //固定写法
}))

4、使用

// 1 导入session中间件
const session = require('express-session')
​
const express = require('express')
const app = express()
​
// 2 注册session中间件
session.use(session({
    secret: 'key',  //随机指定
    resave: false,  //固定写法
    saveUninitialized: true  //固定写法
}))
​
// 3 使用session
​
app.post('/user/login',(req,res)=>{
    req.session.user=req.body
    // ....
})
​
app.get('/getUsername',(req,res)=>{
    const username = req.session.user.username
    // ....
})

2、jwt的使用

jwt : json web token

jwt由三部分组成:header(头部)、payload(载荷)、signature(签名) header.payload.signature

jwt的使用:客户端收到服务器返回的token之后,通常将其存储在localStorage或者sessionStorage中,在后面的通信过程中,将token放在请求头的Authorization字段中 格式:Bearer token

1、安装express-jwt 以及jsonwebtoken包

npm i jsonwebtoken express-jwt

2、使用jwt

// 1.导入jsonwebtoken和express-jwt模块
const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')

const express = require('express')
const app = express()

// 2.定义秘钥。注册解析中间件
const secretKey = 'hello cc'

// unless 的作用为排除某些路径不需要鉴权
// express-jwt 这个中间件注册成功之后,会将用户信息绑定到req上面,可以通过req.user获取
app.use(expressJWT({
    secret: secretKey
}).unless({
    path: [/^/api//]
}))

// 3.生成token
app.post('/api/login', (req, res) => {
    const user = { id: 1, username: 'zs' }
    const token = jwt.sign(user,
        secretKey,
        { expiresIn: '30s' }// 定义token过期时间为30s  30h
    )
    res.send({ token: token })
})