带有 auth0-lock 的 Auth0 仅在使用调试器时进行身份验证,以缓慢单步执行代码

Posted

技术标签:

【中文标题】带有 auth0-lock 的 Auth0 仅在使用调试器时进行身份验证,以缓慢单步执行代码【英文标题】:Auth0 with auth0-lock only authenticates when using debugger, to slowly step through code 【发布时间】:2016-11-09 15:03:09 【问题描述】:

正如标题所说,我正在尝试将 auth0-lock 与 Angular 2 SPA 和 ASP.NET Core API 一起使用。我在验证自己以进行测试时遇到问题。我还使用webpack 来打包应用程序,并删除了所有其他引用,只保留了裸验证应用程序。

我在这里按照他们的教程进行操作:https://auth0.com/docs/quickstart/spa/angular2

问题是,当我点击构造函数时,它只会在我使用调试器慢慢单步执行库代码时进行身份验证。

constructor() 
      debugger
    // Add callback for lock `authenticated` event
      this.lock.on("authenticated", (authResult) => 
        debugger
      localStorage.setItem('id_token', authResult.idToken);
    );
  

如果我删除调试器并让它以正常速度运行,它将永远无法验证; auth0-lock 会出现,我可以登录,然后它会重新加载,但我不会登录,本地存储中也不会有任何东西。

更新:所以我想我找到了这个问题的原因。使用 Angular 2 最新的组件路由器;如果我将路由注释掉,身份验证会立即生效,但将其放回我必须使用调试器来减慢它的速度。否则,它不会auth。有没有办法解决这个问题?

当我通过身份验证时,我也遇到了另一个问题,查询我的 API 我得到了回复 401 Unauthorized,即使 Auth0 说我已获得授权。我可以在localStorage 中看到我的令牌,以及在angular2-jwt 中找到的authHttp 模块的使用来自另一个关于角度2 的Auth0 教程。

我的后端 (asp.net Core) 有一个带有 [Authorise] 的方法。我从这里https://auth0.com/docs/quickstart/backend/aspnet-core-webapi 开始按照设置进行操作,但我遇到了上述问题。

更新:所以事实证明,这个问题是由于我跳过了教程中关于将SignatureAlgorithm 更改为使用RS256 的部分造成的,我已将其更改为使用 RS256 方法并且在这方面工作正常现在仍然存在当我在 Angular 2 上启用路由时它不会进行身份验证的问题 这是该项目的 Github 存储库:https://github.com/Toxicable/Templates

【问题讨论】:

【参考方案1】:

关于启用路由时的身份验证问题,这可能与Angular 2 router will not preserve query and fragment parameters upon navigation有关。

这意味着 Auth0 Lock 不会在 URL 中看到与身份验证相关的参数,因此不会对用户进行身份验证。如果是这种情况,请尝试按照其他答案 (How to use the HashLocationStrategy with the Auth0 Lock widget for user login) 中指示的程序进行操作,尽管使用 HashLocationStrategy 进行路由的情况可以解决此问题,我不知道是不是您的情况。

【讨论】:

以上是关于带有 auth0-lock 的 Auth0 仅在使用调试器时进行身份验证,以缓慢单步执行代码的主要内容,如果未能解决你的问题,请参考以下文章

Vue/Quasar 和 Capacitor 应用程序的 Auth0 回调 URL

Microsoft Teams 应用程序的 Auth0 登录

Angular 6 Auth0 - 全局未定义

哪个 babel 插件声明了这个 var?

带有自定义登录页面的 Auth0 授权代码流

Auth0,带有授权扩展和 ASP.NET 授权