问题标签 [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.
angular - Angular 中的通用 http 错误处理
angular2-jwt为原生 Angular http 类提供了一个 AuthHttp 包装器,它自动在每个请求中包含 http 授权标头。在我的服务中,我通常会调用这样的后端 api
带有错误处理程序,例如
我一直在我的所有服务中重复 handleError 方法,我想知道是否有办法使这个 DRY。有没有办法为所有 http 请求定义一个通用错误处理程序?
如果可能的话,我想避免每次都调用 catch 。有没有办法扩展 http 类以自动捕获每个请求的错误,然后在特殊情况下我可以根据具体情况添加自定义捕获逻辑?
我可以从另一个文件中导出该方法并将其导入我的每个服务中,但我认为必须有更好的方法。感谢您的任何建议。
更新:我最终从 angular2-jwt 扩展了 AuthHttp 类。
angular - Angular - 刷新 JWT 令牌(并行调用)
我对刷新令牌的流程有疑问。
我尝试将此称为令牌。令牌已过期并发出第二次请求以刷新令牌。我正在接受响应并使用新令牌重新运行请求。
一切都很完美,直到我尝试使用相同的无效令牌发出多个并行请求。
问题是,如果我使用相同的令牌进行 3 次并行调用,那么第一次调用会使令牌对其他 2 次调用无效..
我在流程上做错了吗?
authentication - Laravel 5.4 和 Tymon JWT 库:令牌生命周期始终只有一分钟
我在使用这个库时遇到了问题。客户端上使用的代码与服务器上运行的代码相同。令牌的生命周期为 1440 分钟,但此配置仅适用于本地服务器,不适用于远程服务器。
我不知道我是否应该在 apache 或系统中配置其他东西,但在 Laravel 中完全相同(我使用 git 发送更改)。在双方我都使用 Ubuntu 16.04,在我的本地服务器上我使用 php 7.1,在我的远程服务器上我使用 php 7.0。在我的本地浏览器中,我使用的是 Angular 4。我在 Laravel 中的代码是:
laravel - Angular 2 JWT 在页面重新加载期间不发送授权承载令牌
我正在使用Tymon JWT从我的Laravel
应用程序中设置 JWT 令牌。
我的设置类似于快速入门指南,当我使用 进行测试时postman
,后端成功返回访问令牌。
在前端,我使用Angular2-jwt从前端发送请求,并将Http
模块替换为AuthHttp
来自此包的模块,该包是 Http 模块的包装器。
配置 AuthModule 类似于指南:
在登录页面的第一次加载期间,如果我有有效的身份验证令牌,则请求中没有Authorization: Bearer <token>
添加任何内容。Get
有时它会被添加到标头中,并且在某些请求中标Authorization
头中没有。
图片1:
即使有有效的令牌,也没有在标头中添加授权
图片2:
授权标头在向后端请求令牌之前添加。
我不确定何时添加标题以及何时从标题中删除。
有没有其他人收到过这种问题?
如果需要更多详细信息,将添加它们。
oauth-2.0 - 具有身份 server4 并发登录的隐式授予 SPA
如何限制每个客户端应用程序上的 x 登录次数,特别是具有授权类型的 SPA 客户端 - 隐式
尝试的解决方案 -
访问令牌持久保存到数据库,但是这种方法客户端不断更新访问令牌而无需编写代码,因为客户端浏览器请求带有一个有效令牌,尽管它已过期,静默身份验证通过发出新的参考令牌来更新令牌(可以在表中可以看到persistGrants token_type 'reference_token')
Cookie 事件 - 在 validateAsync 上 - 虽然这仅适用于服务器 Web,但运气不佳,我们不能将此逻辑放在 SPA 客户端的 oidc 库中。
通过覆盖 SignInAsync 自定义 signInManager - 但在调试模式下执行未达到这一点,因为 IDM 不断识别用户具有有效的令牌(虽然已过期)不断重新发出令牌(请注意这里没有刷新令牌来管理它通过存储和修改!!!)
即使访问令牌已过期,IDM 如何在不带用户进入登录屏幕的情况下重新颁发令牌的任何线索??(静默身份验证。??
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 提供者!
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
ruby-on-rails - Rails 5.1:devise_token_auth 在只能找到 1 个错误时返回 2 个错误
与常规设计 gem 的这个问题类似,使用devise_token_auth gem 显示相同的结果 - 验证错误在 json 响应中出现两次!?
从日志:
请注意, unpermitted_parameters 行显示了两次 - 这似乎表明有些奇怪(这些行不通过 Postman 显示)。
我的用户模型在标准指南中没有任何额外内容,因此我的模型绝对没有 2 个唯一性或存在性验证,并且检查 gem 的源代码似乎也没有。
这是模型:
如果我从 Postman 调用此端点,我会得到相同的结果,这是返回的 json:
Rails API 是使用angular2-token库从 Angular2 调用的,但这显然不是问题(给出 Postman 的结果)。
我如何才能找到导致此问题的原因,或者如何对 gem 进行猴子修补以消除第二个错误?
更新
如果我:validatable
从模型中删除并进行自己的验证:
我得到相同的结果,这很奇怪。
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)
angular - 在哪里为 angular2-jwt 设置 AuthConfigConsts?
我正在使用angular2-jwt进行身份验证。我需要将默认令牌名称从 更改token
为customer
。
我知道我需要更改DEFAULT_TOKEN_NAME
. AuthConfigConsts
但我不确定我应该在哪里以及如何做。