JWT:如何在标头中发送授权

laravel

1个回答

写回答

lalisa2333

2025-06-18 00:50

+ 关注

JS
JS

使用JWT(JSON Web Token)可以在网络请求的标头中发送授权信息,实现身份验证和授权功能。JWT是一种开放的标准,定义了一种紧凑且自包含的方式来传输信息,通常用于跨域身份验证和授权。

什么是JWT?

JWT是一种用于在网络上传输信息的令牌(token)格式。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部和载荷以Base64编码的JSON格式存储,并使用签名进行校验。JWT的格式通常为"xxx.yyy.zzz",其中xxx是经Base64编码的头部,yyy是经Base64编码的载荷,zzz是签名。

如何在标头中发送授权?

在网络请求的标头中发送JWT授权信息非常简单。只需将JWT令牌放置在标头的"Authorization"字段中,以"Bearer"开头,后跟一个空格,然后是JWT令牌本身。示例如下:

GET /api/user HTTP/1.1

Host: example.com

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwIBMFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

上述示例中,JWT令牌是"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwIBMFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",并以"Bearer"开头放置在"Authorization"字段中。

示例代码:使用Express.JS发送JWT授权

以下是使用Node.JS和Express.JS框架发送JWT授权的示例代码:

Javascript

const express = require('express');

const jwt = require('JSonwebtoken');

const app = express();

// 生成JWT令牌

function generateToken(user) {

const payload = {

sub: user.id,

name: user.name,

iat: Math.floor(Date.now() / 1000)

};

return jwt.sign(payload, 'your_secret_key');

}

// 身份验证中间件

function authenticate(req, res, next) {

const token = req.headers.authorization.split(' ')[1];

jwt.verify(token, 'your_secret_key', (err, decoded) => {

if (err) {

return res.status(401).JSon({ message: '授权失败' });

}

req.user = decoded;

next();

});

}

// 示例路由,需要授权访问

app.get('/api/user', authenticate, (req, res) => {

res.JSon({ message: '你已成功访问受保护的资源' });

});

// 示例路由,生成JWT令牌

app.get('/api/login', (req, res) => {

const user = {

id: 123,

name: 'John Doe'

};

const token = generateToken(user);

res.JSon({ token });

});

app.listen(3000, () => {

console.log('服务器已启动');

});

上述示例中,generateToken函数用于生成JWT令牌,authenticate中间件用于验证JWT令牌,/api/user路由需要授权才能访问,/api/login路由用于生成JWT令牌。在请求/api/user时,需要在标头中添加JWT授权信息。

使用JWT可以在网络请求的标头中发送授权信息,实现身份验证和授权功能。只需将JWT令牌放置在标头的"Authorization"字段中,以"Bearer"开头,后跟一个空格,然后是JWT令牌本身。通过使用JWT,可以简化身份验证和授权的实现,提高系统的安全性和可扩展性。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号