我正在项目中实施auth0登录,并尽可能快地使用托管登录页面。在auth0 vue文档之后,我已经快速启动并运行,我可以登录并注销用户。
现在,我尝试创建一个路径为user/:id
的用户个人资料页面。对于:id
部分,我想使用用户个人资料的user_id,但我在理解获取它的最佳方式时遇到了问题。我意识到我可以使用auth0 api用户端点,但我不确定这是否正确。每次用户点击其个人资料时,我是否真的需要对用户端点进行API调用?有没有更好的方法来获取user_id,可能来自登录时在localStorage中设置的id_token
?
更好的是,有没有办法获得实际的用户ID?我知道如果我使用自己的数据库设置我自己的登录,我会有一个自动递增ID,我将其用于用户ID。 Auth0似乎不太可能,或者我错了吗?
答案 0 :(得分:1)
披露:我为Auth0工作。
在身份验证/授权结束时返回的idToken
为JSON Web Token。此令牌包含Auth0 user_id
作为sub
(主题)声明(属性)。
如果您使用的是Auth0.js或我们的AuthService教程,Auth0.js将解码此令牌并将其作为idTokenPayload
中的authResult
对象提供给您。这可用于将用户标识为idTokenPayload.sub
。
您可以将此对象作为整体存储在localStorage中,或者只是解码您从localStorage获取的令牌。但请注意,您应该在从localStorage获取令牌后验证令牌。
为避免上述所有情况,您可以在每次应用程序引导时使用checkSession
方法获取accessToken
/ idToken
的新副本,并直接依赖它:)