gpt4 book ai didi

javascript - 基本身份验证是正确的选择吗?

转载 作者:行者123 更新时间:2023-11-30 15:43:49 25 4
gpt4 key购买 nike

我一直在使用 Dropwizard 为我的网络应用程序开发 RESTful 后端。现在,开发前端,我需要让用户登录。我一直在使用@Auth 注释,例如:

@POST
public void createEvent(@Auth User user, @FormParam("startTime") @NotNull @Min(0) Long startTime,
@FormParam("endTime") @NotNull @Min(0) Long endTime) {
validateEvent(startTime, endTime);
eventDAO.insertEvent(new Event(Util.convertMillisToDate(startTime), Util.convertMillisToDate(endTime), user.getName()));
}

确保用户已登录。一切都很好,但这是使用 http 基本身份验证。结果是我每次要执行操作时都必须将用户名和密码发送到服务器。这就引出了一个问题:我应该如何将密码存储在客户端上?我是否应该在客户端对密码进行哈希处理(也许连同它的盐一起?),这样如果我将它们存储在例如cookie,对于可以访问计算机的人来说,它不是明文吗?我应该一直使用用户访问 token 吗?

最佳答案

使用某种 session token 几乎总是最佳选择。您只需发送一次用户名和密码,然后您将获得一个 session token ,用于在所有其他请求中识别用户。

这里有很多优点:

  1. 您不需要在客户端上存储密码,只需存储 session token 。
  2. 如果 session 遭到破坏(例如,被恶意客户端破坏),您可以使 token 无效,而不必同时更改密码。
  3. 您可以限制特定 token 的权限。
  4. 您可以让用户为第三方应用生成 token ,而无需为这些应用提供密码。

第 1-2 点在任何系统中都很好,因为它们通常使 session 更安全。当您设计公共(public) API 时,第 2-4 点特别有用,因为您可以使用像 OAuth 2.0 这样的协议(protocol)。为第三方应用程序提供对您应用程序的全部或部分的安全且可撤销的访问权限,而无需向该第三方提供用户名或密码。

关于javascript - 基本身份验证是正确的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com