当前位置: 首页 > 知识库问答 >
问题:

如何将jwt令牌存储在localStorage中并将其发送回带有标头的服务器?

荀博
2023-03-14

我在stackoverflow上读了很多文章,看过很多youtube视频,但没有找到示例代码来演示将jwt保存到localstorage的流程-使用授权标头发送回服务器进行验证。

这是我想做的。

当客户端登录到服务器时,服务器提供令牌并将其保存到客户端本地存储(或会话存储)。

每当客户端调用只能使用令牌访问的api时,客户端从本地存储中检索令牌,并将该令牌与授权标头(请求标头。[x-access-token]或请求标头。[authorization])一起发送到服务器。

但是我读过的所有文章都是用Postman解释这个问题,它没有显示如何将其存储到本地存储,并将其放在授权标头中。

我必须使用本地存储吗。当服务器将令牌提供给客户端时,使用和本地存储。在将该令牌发送回服务器之前,使用append()或axios()获取项目和新标题?

示例不一定是针对快速用户的,但我想了解一下想法。

共有3个答案

颜安宁
2023-03-14

很简单跟着我

首先,您必须将Token(或访问令牌)保存到本地存储中,在发送登录请求时在登录组件中执行以下操作:

signin:function() {
        axios.post('http://Somthing/log-in/',{
            username: this.username,
            password: this.password,
        })
        .then( (response) => {
            
            let token = response.data.access;
            localStorage.setItem("SavedToken", 'Bearer ' + token);
            axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
            (this.$router.push({name:'HomePage'}));
            
            })

所以现在的问题是,每当你刷新主页时,你都会得到401错误,解决方案是:只需添加以下内容:{Headers:{Authoration: localStorage.getItem('SavedToken') }}到每个需要Token的请求的末尾,如下所示:

 axios.get('http://Something/', { headers: { Authorization:localStorage.getItem('SavedToken') }})
        .then(response =>{
            //something
        })

请注意,我在这个解释中使用的令牌是SIMPLEJWT,如果您使用其他东西,也许您必须将“承载者”更改为其他东西。

丘学海
2023-03-14

首先,您必须通过Jwt(jsonWebTokens)创建或生成令牌,然后将其存储在本地存储中或通过Cookie或通过会话。我通常更喜欢本地存储,因为通过SET将令牌存储在本地存储中并使用GET方法检索它更容易。通过get检索后,您可以通过jwt验证它,并使用承载身份验证对其进行身份验证。

对于标题,添加授权

fetch("/users", {
  method: "Get",
  headers: {
    "content-type": "application/json",
    Authorization: "Bearer" + localStorage.getItem("token")
  }
万选
2023-03-14

您可以将jwt令牌存储在localstorage中,当您进行API调用时,可以将令牌作为令牌添加到头中。如果您使用的是axios,您可以像这样将令牌附加到标头。这里,令牌存储在本地存储中,密钥为“jwtToken”

  axios.post('http://yourendpoint',data,{ headers: { Authorization:localStorage.getItem('jwtToken') } })
            .then(response=> console.log(response))
            .catch(error => console.log(error));
   };
 类似资料:
  • Angular这个代币怎么获得?我试图使用这段代码,但得到一个空值。请帮帮忙。

  • 我有两个Rest终点。 -身份提供程序,在用户通过用户名/密码的身份验证后,发送JWT令牌作为响应。 -接受上述JWT令牌作为头,对其进行验证,如果令牌有效,则发送用户JSON作为响应。 我已经使用Angular2创建了我的UI null

  • 问题内容: 我要上传图像并将其保存在服务器中。我上传了图像并获得了预览,但是我被困在将图像发送到服务器上。我想使用角度服务将此图像发送到服务器。 这是HTML代码 这是指令 问题答案: 假设您在后端中期望Multipart,这是一段对我有用的代码。 这是一个jsfiddle。 请注意 以下部分: 是一些Angular魔术,为了使$ http解析FormData并找到正确的内容类型,等等。

  • 问题内容: 如您所见,我在AngularJS,JS和Web开发中都是新手=)对此感到非常抱歉,但我尝试这样做。 我尝试使用AngularJS控制器构建大型的Web表单(大约200个不同的字段)。我需要从控制器访问根数据源。AngularJS团队要求不要只为存储数据而提供服务,而是要为加载和保存数据(从服务器上的.json文件开始)提供服务。 服务: 控制器: 控制器返回未定义。但是来自服务的con

  • 我有一个顶点。x REST服务接收带有jwt令牌的请求,我想调用另一个传递接收到的令牌的REST服务。在路由器处理程序和WebClient调用之间,我有一个业务逻辑层。我的问题是,除了通过我的业务逻辑层显式地传递令牌之外,是否有其他方法可以向webClient提供令牌?换句话说,是否可以从vertxContext或其他组件中以某种方式检索我的RoutingContext和令牌? 示例代码演示了我想

  • 我正在用Django和angular构建一个应用程序。目前,我正在本地存储上存储后端发布的JWT。但是,我担心XSS攻击。我应该使用仅HTTP cookie存储令牌吗?我还考虑将令牌存储在auth服务类的变量字段中。但我不能完全确定angular是否在整个应用程序中共享该服务。我的身份验证服务是否只有一个实例?