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

时间:2016-07-07 10:19:34

标签: authentication angular asp.net-core auth0

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

我在这里按照他们的教程: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立即工作,但把它放回去我必须使用调试器来减慢它。否则,它不会auth。有什么方法可以解决这个问题吗?

我在进行身份验证时遇到了另一个问题,查询我的API我收到了回复401 Unauthorized,即使Auth0说我已获得授权。我可以在localStorage中看到我的令牌,以及authHttpangular2-jwt模块中使用Auth0来自另一个[Authorise]角度2的教程。

我的后端(asp.net Core)具有SignatureAlgorithm的方法。我跟着这里的设置https://auth0.com/docs/quickstart/backend/aspnet-core-webapi了解了如何开始,除了我遇到了上述问题。

更新所以事实证明这个问题是由于我跳过了教程中关于更改RS256以使用class Legs { var count = 0 } class Dog { var legs = Legs() } var dog = Dog() dog.legs.count = 4 的部分,我已将其更改为使用RS256方法并且在这方面工作得很好,现在仍然有问题,当我在角度2上启用路由时它不会认证 这是该项目的Github Repo:https://github.com/Toxicable/Templates

1 个答案:

答案 0 :(得分:0)

关于启用路由时的身份验证问题,这可能与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进行路由的情况,我不知道是否是您的情况