gpt4 book ai didi

javascript - 在哪里存储身份验证 token (前端)以及如何将其放入多个端点的 http header 中?

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

I wanted to write auth backend for both mobile and webapp, so I decided to go with the DRF (Django Rest Framework) token authentication.

I pretty much figured out backend via DRF documentation but regarding frontend implementation it just says "include token in the header of every http request to the API."


所以我的问题是

  1. 当我在 AJAX 调用中检索 token 时,我应该将它存储在哪里,以便在浏览器刷新时它不会消失?
    (显然我没有使用 cookie,因为手机对 cookie 使用有限制)
  2. 如何在多个 API 端点的 http header 中插入身份验证 token ?

在 Stackoverflow 的帮助下,我想出了如何在单个 http header 中插入身份验证 token 。

$.ajax({
url: "https://www.something.com/random",
type: 'get',
headers: {
token: "t&jdd9HJKHdss7hkjjkhdshgs",
}
});

我想知道我是否必须为每个端点编写这段代码,或者是否有一种方法可以覆盖所有端点而不是多余的?

最佳答案

在浏览器中存储 token 的方式有以下三种:

  1. LocalStorage - 存储没有过期日期的数据,无法从后端访问。
  2. SessionStorage - 存储数据直到浏览器/选项卡打开,无法从后端访问。
  3. Cookie - 存储数据,过期时间可以单独设置,自动随后续请求发送到服务器。

更多信息:https://scotch.io/@PratyushB/local-storage-vs-session-storage-vs-cookie

因此,唯一的 Cookie 会自动为您完成所有其他操作 - 您需要手动提供。

您可以选择 LocalStorageSessionStorage,但是如果您希望用户在下次打开页面时登录 - 我会选择 本地存储

然后它需要手动添加到每个 API 请求中,但您可以创建一个辅助函数以使其更容易:

function apiRequest(type, url) {
return $.ajax({
url: url,
type: type,
headers: {
token: localStorage.getItem("token"),
}
});
}

apiRequest("get","https://www.something.com/random").done(function(data) {
console.log(data)
})

更多关于 localStorage 的信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

关于javascript - 在哪里存储身份验证 token (前端)以及如何将其放入多个端点的 http header 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51332747/

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