【问题标题】:Looking for some advice on front end/backend user authentication寻找有关前端/后端用户身份验证的一些建议
【发布时间】:2017-01-25 16:05:45
【问题描述】:

我在后面运行一个模拟 expressjs 服务器,在前面运行 ember (ember-simple-auth) 并带有 ember-simple-auth-token 插件。我正在使用 JWT 令牌。我正在尝试确定发送用户信息的最佳方式。通常,当用户提交他们的凭据时,我会创建一个新令牌,将其副本存储在数据库中(我使用的是 mongodb),将其发送到前端,然后使用令牌来获取信息用户信息。我有一个 /auth/token (它验证并发送令牌,制作副本并将其存储在数据库中)和 /current_user 路由,它在初始登录时被调用,它使用令牌并获取用户信息。

在令牌的初始有效负载中简单地发送用户信息比使用单独的路由更好吗?我是否应该在数据库中存储一个副本以便进行比较和检索用户信息?

令牌刷新还有什么好处?

【问题讨论】:

    标签: mongodb authentication express ember.js jwt


    【解决方案1】:

    您正在使用 Jwt-Auth 进行身份验证。 -据我所知,在发送用户凭据后,如果凭据正确,您将使用令牌进行响应,否则发送错误。

    -为什么要将令牌保存在 db 中? 您将向客户端发送令牌(无状态)。如果客户端请求数据,那么我们需要检查令牌。如果它验证则返回正确的响应,否则返回令牌错误。

    -为什么需要令牌刷新? 出于安全目的。每次响应后更改令牌。 TTL 您的令牌将在一段时间内有效(例如 60 分钟)。之后就失效了。

    这就是 JWT 的工作原理。

    【讨论】:

    • 我已经设置好了。用户输入他们的用户名/密码,我向他们发送一个令牌。现在我有一个名为 /current_user 的路由,当用户获取他的令牌时,它会自动调用 /current_user,我使用令牌来验证要发送的用户信息(因为我在数据库中有令牌的副本,所以我比较了两者,并发送“当前用户”信息)。在初始有效负载中简单地发送用户信息是否更有意义?我应该解码令牌而不是进行比较并将数据发送回前端吗?
    • 我想我要问的是,除非您有参考资料,否则您怎么知道要发送什么?
    • 请通过此链接。 github.com/tymondesigns/jwt-auth/wiki/Authentication $user = JWTAuth::parseToken()->toUser();给出用户数据。然后您可以从中检查用户类型。无需将令牌保存在数据库中。(您做得不对)。实际上令牌包含用户和时间戳等的详细信息。(编码)。请检查您的情况如何从令牌中获取数据。
    • 谢谢,我找到了最好的办法。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2019-12-04
    • 2018-07-30
    • 2014-07-16
    • 1970-01-01
    • 2019-01-09
    • 2018-02-25
    • 2020-09-10
    相关资源
    最近更新 更多