问题标签 [angular2-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 回答
6013 浏览

angular - Angular 中的通用 http 错误处理

angular2-jwt为原生 Angular http 类提供了一个 AuthHttp 包装器,它自动在每个请求中包含 http 授权标头。在我的服务中,我通常会调用这样的后端 api

带有错误处理程序,例如

我一直在我的所有服务中重复 handleError 方法,我想知道是否有办法使这个 DRY。有没有办法为所有 http 请求定义一个通用错误处理程序?

如果可能的话,我想避免每次都调用 catch 。有没有办法扩展 http 类以自动捕获每个请求的错误,然后在特殊情况下我可以根据具体情况添加自定义捕获逻辑?

我可以从另一个文件中导出该方法并将其导入我的每个服务中,但我认为必须有更好的方法。感谢您的任何建议。

更新:我最终从 angular2-jwt 扩展了 AuthHttp 类。

0 投票
0 回答
495 浏览

angular - Angular - 刷新 JWT 令牌(并行调用)

我对刷新令牌的流程有疑问。

我尝试将此称为令牌。令牌已过期并发出第二次请求以刷新令牌。我正在接受响应并使用新令牌重新运行请求。

一切都很完美,直到我尝试使用相同的无效令牌发出多个并行请求。

问题是,如果我使用相同的令牌进行 3 次并行调用,那么第一次调用会使令牌对其他 2 次调用无效..

我在流程上做错了吗?

0 投票
1 回答
73 浏览

authentication - Laravel 5.4 和 Tymon JWT 库:令牌生命周期始终只有一分钟

我在使用这个库时遇到了问题。客户端上使用的代码与服务器上运行的代码相同。令牌的生命周期为 1440 分钟,但此配置仅适用于本地服务器,不适用于远程服务器。

我不知道我是否应该在 apache 或系统中配置其他东西,但在 Laravel 中完全相同(我使用 git 发送更改)。在双方我都使用 Ubuntu 16.04,在我的本地服务器上我使用 php 7.1,在我的远程服务器上我使用 php 7.0。在我的本地浏览器中,我使用的是 Angular 4。我在 Laravel 中的代码是:

0 投票
0 回答
343 浏览

laravel - Angular 2 JWT 在页面重新加载期间不发送授权承载令牌

我正在使用Tymon JWT从我的Laravel应用程序中设置 JWT 令牌。

我的设置类似于快速入门指南,当我使用 进行测试时postman,后端成功返回访问令牌。

登录令牌作为后端的响应

在前端,我使用Angular2-jwt从前端发送请求,并将Http模块替换为AuthHttp来自此包的模块,该包是 Http 模块的包装器。

配置 AuthModule 类似于指南:

在登录页面的第一次加载期间,如果我有有效的身份验证令牌,则请求中没有Authorization: Bearer <token>添加任何内容。Get有时它会被添加到标头中,并且在某些请求中标Authorization头中没有。

图片1:

即使有有效的令牌,也没有在标头中添加授权

标题没有授权

图片2:

授权标头在向后端请求令牌之前添加。

在 Header 上添加了授权

我不确定何时添加标题以及何时从标题中删除。

有没有其他人收到过这种问题?

如果需要更多详细信息,将添加它们。

0 投票
1 回答
602 浏览

oauth-2.0 - 具有身份 server4 并发登录的隐式授予 SPA

如何限制每个客户端应用程序上的 x 登录次数,特别是具有授权类型的 SPA 客户端 - 隐式

这超出了身份服务器的范围

尝试的解决方案 -

  1. 访问令牌持久保存到数据库,但是这种方法客户端不断更新访问令牌而无需编写代码,因为客户端浏览器请求带有一个有效令牌,尽管它已过期,静默身份验证通过发出新的参考令牌来更新令牌(可以在表中可以看到persistGrants token_type 'reference_token')

  2. Cookie 事件 - 在 validateAsync 上 - 虽然这仅适用于服务器 Web,但运气不佳,我们不能将此逻辑放在 SPA 客户端的 oidc 库中。

  3. 通过覆盖 SignInAsync 自定义 signInManager - 但在调试模式下执行未达到这一点,因为 IDM 不断识别用户具有有效的令牌(虽然已过期)不断重新发出令牌(请注意这里没有刷新令牌来管理它通过存储和修改!!!)

即使访问令牌已过期,IDM 如何在不带用户进入登录屏幕的情况下重新颁发令牌的任何线索??(静默身份验证。??

0 投票
1 回答
215 浏览

angular - angular2-jwt - 调用函数“provideAuth”,不支持函数调用

我在我的 angular2/4 应用程序中使用angular2-jwt插件进行身份验证。但在设置环境后,我可以使用它一次。重建项目后,出现以下错误。

错误:

错误中的错误遇到静态解析符号值。调用函数'provideAuth',不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用,解析 /home/user/projects/project/src/app/app.module.ts 中的符号 AppModule,解析 /home/user/projects/project/ 中的符号 AppModule src/app/app.module.ts

我的 app.module.ts

收到此错误后,我像这样导出函数:

并在提供程序中导入,但错误将是:

ERROR 错误:未捕获(承诺):错误:没有 AuthHttp 提供者!

在提供程序中添加AuthHttp后,错误将是:

ERROR 错误:未捕获(承诺):错误:没有 AuthConfig 提供者!

0 投票
0 回答
1241 浏览

angular - Angular2浏览器刷新不适用于auth guard


我已经搜索了互联网,但找不到答案。我发现路由守卫上的这篇文章在浏览器刷新上不起作用,并且解决方案不起作用,因为我认为它是特定于 Firebase 的。

app.module.ts


我在各种路由模块中定义了各种路由:

app-routing.module.ts(全局路由配置)

登录路由.module.ts

家庭路由.module.ts

设置-routing.module.ts


下面是我使用的 Auth Guard,它是根据这篇关于使用 jwt 登录的文章修改的:


使用当前的实现,以下是行为:

如果用户未登录

  • /上班
  • 转到/home/settings在 URL 中重定向到/(登录屏幕)
  • 转到任何随机 URL(如/fjdsakfjkla)重定向到/(登录屏幕)

如果用户已登录

  • 在 URL 中键入/home/settings指示用户正确的路线
  • 转到任何随机 URL(如/fjdsakfjkla)重定向到/home
  • 类型/(登录页面)将用户定向到/home


问题是,登录后,在浏览器刷新期间,您被重定向到/home. 如果用户登录,我该如何做到这一点,浏览器刷新将保持路由?例如,如果我在/settings,浏览器刷新不会重新路由到/home并保持在/settings.

当前: /settings →浏览器刷新→/home
期望: /settings →浏览器刷新→/settings

0 投票
1 回答
613 浏览

ruby-on-rails - Rails 5.1:devise_token_auth 在只能找到 1 个错误时返回 2 个错误

与常规设计 gem 的这个问题类似,使用devise_token_auth gem 显示相同的结果 - 验证错误在 json 响应中出现两次!?

从日志:

请注意, unpermitted_pa​​rameters 行显示了两次 - 这似乎表明有些奇怪(这些行不通过 Postman 显示)。

我的用户模型在标准指南中没有任何额外内容,因此我的模型绝对没有 2 个唯一性或存在性验证,并且检查 gem 的源代码似乎也没有。

这是模型:

如果我从 Postman 调用此端点,我会得到相同的结果,这是返回的 json:

Rails API 是使用angular2-token库从 Angular2 调用的,但这显然不是问题(给出 Postman 的结果)。

我如何才能找到导致此问题的原因,或者如何对 gem 进行猴子修补以消除第二个错误?

更新

如果我:validatable从模型中删除并进行自己的验证:

我得到相同的结果,这很奇怪。

0 投票
0 回答
646 浏览

angular - 无法读取未定义的属性“帖子”?

TypeError:无法读取未定义的属性“帖子”

当我们在生产中生成应用程序时,就会发生这种情况。在开发模式下,一切正常。仅在生产模式下 http.post 未定义。

vendor.2a1591e60e00b8e65016.bundle.js:1 错误类型错误:无法在 l.Ct5P.l.login (main.951fcf271be890a69879.bundle. js:1) 在 l.K181.l.login (main.951fcf271be890a69879.bundle.js:1) 在 Object.handleEvent (main.951fcf271be890a69879.bundle.js:1) 在 Object._ [as handleEvent] (vendor.2a1591e60e00b8e65016 .bundle.js:1) 在 Object.handleEvent (vendor.2a1591e60e00b8e65016.bundle.js:1) 在即 (vendor.2a1591e60e00b8e65016.bundle.js:1) 在 vendor.2a1591e60e00b8e65016.bundle.js:1 在 HTMLButtonElement。(vendor.2a1591e60e00b8e65016.bundle.js:1) 在 e.invokeTask (polyfills.939bb971810907071b8d.bundle.js:1)

0 投票
1 回答
61 浏览

angular - 在哪里为 angular2-jwt 设置 AuthConfigConsts?

我正在使用angular2-jwt进行身份验证。我需要将默认令牌名称从 更改tokencustomer

我知道我需要更改DEFAULT_TOKEN_NAME. AuthConfigConsts但我不确定我应该在哪里以及如何做。