node.js - 为什么使用护照本地策略加上jwt策略
问题描述
您好我正在尝试构建一个 NestJS API,并想学习最佳实践来做到这一点。
所以我想知道为什么 Nest JS 的文档
https://docs.nestjs.com/security/authentication
passport-local
是否提供了具有耦合和passport-jwt
策略的身份验证示例?
难道不能只使用passport-jwt
?
如果答案是肯定的,但这不是一个好习惯,您能否提供解释。
如果答案是肯定的并且这是最佳实践,您是否知道他们为什么在身份验证等如此重要的主题上没有使用最佳实践的示例?
解决方案
如果我记得文档,从我自己使用 Nest 进行身份验证开始,jwt 和本地策略是验证用户访问权限的两种方法,但可以互补使用。
本地策略允许您的服务器使用用户名和密码验证用户。因此它适用于登录端点,用户填写应用程序的登录表单。
使用这第一步,您可以使用 jwt 令牌 api 创建将识别用户的令牌。例如,您可以在 cookie 中设置此令牌,以便在用户发出其他请求时能够在您的服务器上访问它。
现在,jwt 策略将完美地通过检查用户的数据及其在令牌中的签名来验证用户。
因此,要回答您的问题,您当然可以只使用这两种策略中的一种,但您需要自己实施它们的功能。例如,本地策略很容易被解析器或控制器中的简单端点模仿,这些端点检查数据库中的用户信息(用户名和密码),如果成功则设置 cookie,如果失败则响应未经授权的
希望我说的有道理!
推荐阅读
- reactjs - 如何使用 Material-ui 更改 nowrap 文本
- c# - 带有 Hangfire 连接问题的 SQL Server Express:用户登录失败
- django - 如何翻译 django-allauth 模板?
- mysql - 构建 Docker mysql 数据库后抛出 OperationalError
- java - 如何设计一个系统来根据电子邮件中的链接对用户进行身份验证
- c# - C# 错误:控制不能从一个 case label('case0:') 到另一个 case label('case0:')
- windows - 在命令提示符/Windows Powershell (Windows 10) 中使用 UTF-8 编码 (CHCP 65001)
- android - android中webView中的ERR_ACCESS_DENIED
- python - 为什么基于 fft 的卷积总是比空间卷积运行得慢?
- python-3.x - 如何从 mysql 数据库和树视图中删除 python ttk 树视图上的选定项目?