正如标题所说,我正在尝试将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
中看到我的令牌,以及authHttp
中angular2-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
答案 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
进行路由的情况,我不知道是否是您的情况