【问题标题】:How to Set token in Header on every request?如何在每个请求的标头中设置令牌?
【发布时间】:2019-02-20 00:21:58
【问题描述】:

如何在标头中设置 JWT 令牌?

我正在通过 AJAX 调用发送用户名和密码,并收到带有 JWT 令牌的响应 200。我正在会话存储中设置该令牌。如何在标头中设置它以检查令牌是否存在,直到会话结束?

我的方法正确吗?在正文中发送凭据>接收响应(成功)>登录成功>将令牌存储在会话存储中并将令牌设置在标头中>会话过期时注销

function validate() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var data = {
    username: username,
    password: password
}
console.log(data);
$.ajax({
    type:"post",
    cache:false,
    url:"xyz",
    data:data,    /
    success: function (result) {
    console.log(result); //will have the status and jwt if it's success               
     }
    });
  };

存储 jwt

let key="token";
sessionStorage.setItem(key, jwt);// will get the jwt from the result.

【问题讨论】:

  • 请问您的代码,先生??
  • @mrid 我已经粘贴了我的代码
  • 听起来你在寻找一个 cookie(它会自动完成所有这些事情),而不是会话存储。
  • @Bergi 是如何工作的,请帮帮我?实际上,正如我在一些文档中阅读的那样,cookie 存储与服务器交互。我如何获取值并将其设置为每个请求的标头?你能帮帮我吗?

标签: javascript


【解决方案1】:

您可以使用setItemsessionStorage 中设置项目:

sessionStorage.setItem("key", "value");

如果要检查sessionStorage中是否设置了key,可以检查是否为true,如:

if (sessionStorage.getItem("key")) {
    //Your code here
}

这是您检查sessionStorage中是否存在密钥的方法,您可以将其应用到script标签内,该标签位于head标签内,以检查用户是否已登录。

【讨论】:

  • 你的意思是
  • 为什么要把它放在<head> 中?
  • 你能解释清楚吗?实际上我需要那个令牌值直到会话存在
  • 如果您的会话概念是“直到浏览器打开”,则 sessionStorage 将在退出浏览器时被清除 - 没关系。否则,我认为 localStorate 更合适,但是您需要检查某些浏览器的支持。
  • @ManojMvvs,是的,没错。获得令牌后,将其与您发出的每个请求一起发送到标头中。当令牌过期时,您需要申请一个新的
【解决方案2】:

您可能想改用 cookie。

document.cookie = "token=" + key + "; expires=0;";

用户每次请求都会发送 Cookie,因此编码要简单得多,并且通过将“expires”属性设置为 0,令牌将在浏览器会话结束后过期。

【讨论】:

猜你喜欢
  • 2019-11-26
  • 2018-10-13
  • 2017-11-29
  • 2017-01-18
  • 2013-07-07
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 2021-03-03
相关资源
最近更新 更多