如何在不使用缓存的情况下实现免登录认证系统

问题描述 投票:0回答:1

我只想让用户在注册之前先玩一下网络应用程序。我觉得这是初创公司的一个常见问题,但没有人很好地解决它。

目前我知道的唯一解决方案是在登录之前实现本地缓存,然后在实际注册时将其转换为 postgres 格式。但这很痛苦,因为它基本上是在复制整个数据结构以及缓存中的 CRUD 过程。

有没有办法在没有缓存的情况下做到这一点。如何使用客户端的计算机信息(或 IP)创建临时 postgres 用户,并在稍后注册时附加实际的身份验证信息。如果是的话,怎么办?

这里的想法都不起作用

authentication auth0 next-auth
1个回答
0
投票
在不使用缓存的情况下实现无登录身份验证系统涉及利用无状态身份验证机制,例如 JSON Web 令牌 (JWT)。以下是如何做到这一点的总体概述:

在服务器上生成 JWT:当用户访问您的应用程序时,生成包含必要信息(例如用户 ID、权限、过期时间)的 JWT。该 JWT 由服务器使用密钥进行签名。

将 JWT 发送到客户端:将生成的 JWT 发送到客户端,作为对其请求的响应的一部分。

客户端在每个请求中发送 JWT:客户端在向服务器发送的每个后续请求的标头(通常是授权标头)中包含 JWT。

服务器验证 JWT:在服务器端,验证从客户端接收到的 JWT。确保签名正确且令牌未过期。

对用户进行身份验证:从 JWT 中提取必要的信息(例如用户 ID)以对用户进行身份验证和授权。由于 JWT 已签名,因此您可以信任其中包含的信息(只要签名有效)。

处理注销和令牌过期:由于没有传统意义上的注销机制,因此您可以通过为令牌设置较短的过期时间或在服务器端将令牌列入黑名单来处理“注销”。当用户想要“注销”时,他们只需停止发送令牌即可。

如果不使用缓存,对服务器的每个请求都需要使用 JWT 进行身份验证。服务器不需要存储任何会话信息,使其成为无状态的。

© www.soinside.com 2019 - 2024. All rights reserved.