问题标签 [passport-jwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
693 浏览

node.js - NodeJS:Passport JWT(v4.0.0) 无法从 POSTMAN Rest Client 验证用户,始终返回 Unauthorized

我正在使用express js作为后端框架,目前正在使用Passport-JWT开发登录身份验证模块,

我想在私有路由上使用身份验证中间件。

我不想写passport.authenticate('jwt', {session: false}在每条路线上,而是想制作一个功能并在每个请求上使用它,例如

登录身份验证工作正常,但之后当我访问私有路由时,它总是给出 "Unauthorized."

我已经搜索了很多相同的问题,但没有一个对我有用,所以我再次问这个问题

当用户成功登录时,以下令牌已存储在本地存储中。

在此处输入图像描述

当我从邮递员休息客户端尝试时

  • 当我使用它时它会未经授权 passport.authenticate('jwt', {session: false}

在此处输入图像描述

  • 当我使用 isAuthenticate 时,它​​显示错误 {name: 'JsonWebTokenError', message: 'invalid signature'} 护照中间件

在此处输入图像描述

我正在使用这个包版本:

这是我的助手/passport.js

这是我的server.js

这是路线/api/auth.js

请帮我解决这个问题

0 投票
1 回答
2228 浏览

node.js - 使用不同的用户角色在passport-jwt中设置身份验证很热门?

我正在尝试添加一个名为 admin 的角色来验证登录到仪表板 Web 应用程序的管理员,而普通用户只能访问常规页面。

对于普通用户,我需要server.js像这样的护照

在中config/passport.js,就像官方示例中的代码一样,我试试这个:

这种方式效果很好,我在路线中使用它们

但是,当我在令牌规则中添加角色时:

我如何检查 admin 属性是否为 true 以查询不同的集合passport.js

我试过这个,这对我不起作用,错误似乎服务器运行了两次:

错误是: 错误

0 投票
1 回答
4542 浏览

node.js - 使用 JWT 进行护照身份验证:如何将护照的默认未经授权响应更改为我的自定义响应?

我创建了一个Node项目passport。当我没有将令牌作为标题时,它会返回Unauthorized。如何将此消息更改为漂亮Sorry invalid credentials

每次无法提供令牌时,我都会得到未经授权的响应。我想把它改成漂亮的信息。

护照.js

用户路由.js

如何将unauthorized消息更改为漂亮(“您无法获取详细信息”)

0 投票
1 回答
138 浏览

angular - 角度 HttpClient.get 方法的问题

我正在我的 MEAN Stack 宠物项目中实施 passport-jwt 来保护路由。服务器端运行良好,服务器在标头中接收到正确的 jwt 并正确响应邮递员请求和来自我的 Angular 应用程序的请求,而我在获取请求中使用完整的 url。

但是当我从请求 url 中删除我的 localhost 域以准备应用程序进行托管时,我开始收到

错误 401 未经授权

我登录以控制台来自两个请求的标头并注意到它们完全不同

第一个(完整网址)请求的标头, 第二个请求的标头

在第一个请求(正常工作)中,我的 jwt 在[[Entries]]数组中,但在第二个请求中,它在lazyUpdate 数组中,服务器找不到它。为什么只有通过从 url 中删除 localhost 才能使标题发生如此巨大的变化?如何修复此标头?

PS我的护照配置

0 投票
1 回答
136 浏览

javascript - 无法处理 JWTStrategy 回调中抛出的错误

我已经设置 JwtStrategy 来验证我的 api 端点。如您所见,如果您在 catch 块上控制台错误,我会抛出自定义JWTExpired错误jwtPayload.expires > Date.now(),它会,然后代码将再次抛出相同的错误并使应用程序崩溃。我使用了相同的结构LocalStrategy来抛出自定义PasswordNotMatch错误,它在那里工作得很好。

0 投票
0 回答
164 浏览

node.js - 在passport js中使用passport-jwt策略时,如何在nodejs中以json格式发送未经授权的响应状态?

我正在使用 nodejs 和 passport js 使用 passport-jwt 策略进行授权。这是我的代码。它适用于 JWT 令牌。但是当没有提供令牌时,它会以文本格式给出“未经授权”的响应。我想自定义它并以 json 格式制作。

请求未通过身份验证时如何返回自定义的 json 响应。

这是策略定义。

0 投票
1 回答
758 浏览

graphql - Apollo 服务器 - 仅使用 Passport-JWT 将身份验证应用于某些解析器

我目前有一个 Node.js 后端运行 Express 和 Passport.js 以进行身份​​验证,并且正在尝试使用 Apollo Server 切换到 GraphQL。我的目标是实现我目前使用的相同身份验证,但无法弄清楚如何在为其他人启用授权的同时公开某些解析器。(我已经尝试广泛研究这个问题,但到目前为止还没有找到合适的解决方案。)

这是我目前的代码:

我的智威汤逊策略:

我的 server.js 和 Apollo 配置:( 我目前正在从 HTTP 标头中提取不记名令牌并使用上下文对象将其传递给我的解析器):

最后,我的解析器:

我的目标是将某些查询(例如第一个(“hello”))公开,同时将其他查询限制为仅具有有效不记名令牌的请求。但是,我不确定如何专门使用 Passport.js 和 Passport-JWT 在解析器中实现此授权(通常通过将中间件添加到某些端点来完成,但是因为在此示例中我只有一个端点(/graphql) , 该选项会将所有查询限制为仅经过身份验证的用户,这不是我想要的。我必须以某种方式在解析器中执行授权,但不确定如何使用 Passport.js 中可用的工具来执行此操作。)

任何意见是极大的赞赏!

0 投票
0 回答
236 浏览

node.js - 尝试使用 passport-jwt 到达受保护的路线时获得 401 状态

我正在使用JWTwithpassport.js进行身份验证。我有一个local strategy注册和另一个登录用户。目前,我让它通过执行以下操作返回令牌:

这将返回一个对象,如:

所以我得到了一个正确的令牌(我已经使用在线解码器进行了检查,它提供了正确的用户 ID 和正确的电子邮件)。

当我使用此路由尝试测试 JWT 策略是否有效时,我收到 401 未经授权的访问消息。

这是我的 JWT 策略

我的路线

我的本地策略使用与调用护照相同的方法工作。

我想我已经包含了所有有价值的东西,如果缺少某些东西,请说,我会用它更新 OP。

我应该注意我正在使用邮递员对此进行测试并使用不记名令牌的授权方法。

提前致谢!

0 投票
1 回答
70 浏览

node.js - 我应该使用 express-jwt 还是 passport-jwt 来保护 Express/Angular 应用程序?

我想知道护照。我想保护基于 API 的前端(Angular)。

我假设这意味着我不能使用passport-local,我必须使用它passport-http来获取用户名/密码,然后passport-jwt执行 JWT 签名和验证。正确的?

然而,它变得令人困惑,因为有一个更流行的包叫做express-jwt. 它们不同吗?我不确定哪个用于什么目的。

0 投票
2 回答
327 浏览

javascript - 范围访问护照-jwt

有人可以向我详细解释为什么 /profile 的路由可以访问用户对象。我目前正在学习 JavaScript 和 NodeJS,您的回答将对我的学习有很大帮助谢谢大家。