java 用户登录生成jwt token
时间: 2023-10-22 10:16:52 浏览: 178
生成 JWT Token 的步骤如下:
1. 创建一个 JWT 的 header,包括算法类型和 token 类型信息
```
Map<String, Object> header = new HashMap<>();
header.put("alg", "HS256");
header.put("typ", "JWT");
```
2. 创建一个 JWT 的 payload,包括用户信息和过期时间等信息
```
Map<String, Object> claims = new HashMap<>();
claims.put("username", "your_username");
claims.put("exp", new Date(System.currentTimeMillis() + 3600 * 1000));
```
3. 生成 JWT Token
```
String token = Jwts.builder()
.setHeader(header)
.setClaims(claims)
.signWith(SignatureAlgorithm.HS256, "your_secret_key")
.compact();
```
其中,`your_secret_key` 是用来签名和验证 token 的密钥,需要妥善保管。
完整的代码示例:
```
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class JwtUtils {
private static final String SECRET_KEY = "your_secret_key";
public static String generateToken(String username) {
Map<String, Object> header = new HashMap<>();
header.put("alg", "HS256");
header.put("typ", "JWT");
Map<String, Object> claims = new HashMap<>();
claims.put("username", username);
claims.put("exp", new Date(System.currentTimeMillis() + 3600 * 1000));
return Jwts.builder()
.setHeader(header)
.setClaims(claims)
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
}
public static void main(String[] args) {
String token = generateToken("test_user");
System.out.println(token);
}
}
```
阅读全文