nodejs session与JWT的使用

本文详细介绍了Web应用中两种常见的用户认证机制——Session和JWT(JSON Web Token)。Session通过服务器存储用户信息,每次请求携带Session ID;JWT则将用户信息加密后存储在客户端,每次请求通过请求头发送。文章还提供了具体的Node.js实现示例,帮助开发者理解这两种技术的工作原理和使用方式。
摘要由CSDN通过智能技术生成

工作原理

session为为客户端浏览器生成一个cookie记录每个客户的id,当每次客户端发送请求时,携带这个id发送,在服务器端接口可以通过该id,获取该id用户的数据,通过req.session调用.用户信息存储在服务器端.

JWT为将用户信息通过加密为jwt字符串发送给客户端,客户端将其保存在localStorage或sessionStorage,在客户端每次发送需要用户权限认证的请求时,将客户端浏览器中的jwt字符串通过在请求中挂载请求头Authorization发送给服务器.在服务器中解码为用户信息,进行权限认证或者给客户端使用.

使用方式

Session

 const session = require("express-session")
 const cors = require("cors")   //使用session需要处理跨域请求
 

 app.use(cors());
 app.use(session({
     secret:"amahamiu",
     resave: false,
     saveUninitialized:true
 }))


 app.get('/user', (req, res) => {
     req.session.user = req.query.id  //客户端第一次调用接口在客户端cookie上绑定一个            
                                      //sessionid的键值对,用户信息存储在服务器端
     res.send('Hello World!')
})

app.get("/get" , (req , res)=>{  //之后每次调用接口,会通过请求头将cookie带给服务器.针对cookie获 
                                 //取服务器端用户信息,赋给req.sesion
    res.send(req.session.user);
})

JWT

const jsonwebtoken = require("jsonwebtoken")  //用于加密用户信息生成token
const { expressjwt: jwt } = require("express-jwt"); //用于解密token还原用户信息

const secretKey = "amahamiu";//加解密密码

app.use(jwt({secret:secretKey,algorithms: ["HS256"]}).unless({ path: ["/user"] }))
//使用该中间件后,会自动在每次客户端请求查看请求头中的Authorization字段,将其解密后绑定给req.auth
//unless用于忽略不需要查看请求头的请求地址.若不忽略,且请求中不存在Authorization字段,会报错


app.get('/user', (req, res) => {
    res.send({
        status:200,
        token:jsonwebtoken.sign({id:200} , secretKey , {expiresIn:"100s"})//加密
    })
})
app.get("/get" , (req , res)=>{
    res.send({
        data:req.auth  //取值
    })
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值