session和JWT的应用及区别

简介: 在Node.js中实现登录认证,可以使用`express-session`进行Session管理。首先安装`express-session`,然后全局引入并配置。登录成功后,存储用户信息和登录状态至Session,之后可从Session中获取或销毁用户信息。另外,JWT(Json Web Token)也是一个选择。JWT包含header、payload和signauter三部分,通过`jsonwebtoken`包生成和解密Token,设置秘钥和过期时间。使用`express-jwt`进行解密,并配置全局错误处理中间件来处理无效Token的情况。

@[toc]

登录认证(node)

一、session

一、在node中使用session
1.要下载session
2.将session全局引入
3.在登录请求中保存用户的登录信息和登录状态
4.在获取session和销毁session
二、session的工作原理
1.当用户发送的请求判断真确后会将用户的信息存在session
2.当用户再次发送请求时,会判断用户的信息是否真确。

1.下载session
npm i express-session
2.全部配置session
const session= require('express-session')
app.use(session({
   
   
    secret:'codeyuan',
    resave:false,
    saveUninitialized:true
}))
3.存储session
 //存储用户的信息
    req.session.user=req.body
    req.session.isLogin=true
4.获取session
//取出session
router.post('/User',(req,res)=>{
   
   
    if(!req.session.isLogin){
   
   
      res.send({
   
   
        code:200,
        msg:"未登录"
      })
    }
    res.send({
   
   
        code:200,
        data:req.session.user
    })
})
5.销毁session
 req.session.destroy() //清空session
二、JWT (Json web token)
1.JWT 的工作原理

image.png

2.JWT 的组成

通常JWT由三部分组成依次是:header,payload,signauter
其中payload 是用户真正的信息。

3.下载JWT
 npm i jsonwebtoken express-jwt
4.生成token

//导入用于生成JWT的包
const jwt=require('jsonwebtoken')
  //生成token
   const tokenStr= jwt.sign({
   
   username:req.body},secretKey,{
   
   expiresIn:"30s"})
5.解密TOken

对于挂载express-jwt的可以在req.user获取到解析的属性。

```javascript
//定义 secrekey秘钥
const secretKey='codeyuan &&'
//用于还原jwt
const expressJWT=require('express-jwt')
//注册jwt的解密 unless这表是那些不用权限
app.use(expressJWT({secret:secretKey}).unless({
path:[/^\/api\//]
}))

![image.png](https://ucc.alicdn.com/pic/developer-ecology/hqza6bnv4j6v2_b3d79359caa342348392b8b3ced49729.png)


###### 6.配置全局错误中间件

```javascript
app.use((err,req,res,next)=>{
    if(err.name=='UnauthorizedError'){
        return res.send({
            status:401,
            msg:"无效token"
        })
    }
    res.send({
        status:500,
        msg:'未知错误'
    })
})
目录
相关文章
|
24天前
|
JSON 安全 算法
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
55 8
|
1月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
|
2月前
|
JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(二)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
48 0
|
2月前
|
存储 JSON JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
108 0
|
3月前
|
JSON 安全 数据库
Python安全性大升级:OAuth与JWT,让你的应用穿上防弹衣🛡️
【9月更文挑战第6天】在数字世界中,每个应用都面临着安全威胁。作为Python开发者,构建强大的系统至关重要。OAuth和JWT为我们提供了坚实的安全保障。OAuth作为一种授权机制,让用户无需向第三方应用暴露敏感信息;JWT则通过自包含的信息传输,增强了安全性并提高了系统性能。利用Python生态中的这些工具,我们可以更好地保护用户数据,守护他们的信任与期待。下面是一个使用PyJWT生成和验证JWT的示例代码:(示例代码同上)通过这些技术,我们的应用能够更加稳健地在数字海洋中航行。
37 3
|
4月前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
75 4
|
4月前
|
JSON 人工智能 算法
Golang 搭建 WebSocket 应用(四) - jwt 认证
Golang 搭建 WebSocket 应用(四) - jwt 认证
64 0
|
6月前
|
存储 JSON API
在django3应用中使用现代的JWT鉴权
【6月更文挑战第8天】本文介绍流行的鉴权方式,JSON Web Tokens (JWT) 是一种验证JSON数据所有者的机制,它是一个编码的、安全的字符串,包含可信任的数据且能加密签名。无状态的令牌认证允许客户端存储令牌并将其在每次请求。
69 8
在django3应用中使用现代的JWT鉴权
|
4月前
|
JSON 安全 数据安全/隐私保护
Python安全性大升级:OAuth与JWT,让你的应用穿上防弹衣🛡️
【8月更文挑战第4天】在数字海洋中,应用如船,承载用户信任,面对安全挑战。OAuth与JWT成为Python开发者构建安全系统的利器。OAuth作为授权桥梁,简化流程,保护隐私;JWT则以自包含的信息传递,加速验证过程,增强安全性。两者结合,为应用穿上坚固防弹衣,确保数据安全,守护用户信任。
29 0
|
6月前
|
消息中间件 Serverless Go
Serverless 应用引擎操作报错合集之通过自定义域名配置jwt认证,始终报错:"Code": "JWTTokenIsInvalid",是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
119 2

热门文章

最新文章