jwt实现单点登录代码
时间: 2023-09-11 08:13:09 浏览: 62
以下是使用JWT实现单点登录的代码示例:
```
import io.jsonwebtoken.Claims;
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 = "yourSecretKey";
private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 24; // 24 hours
public static String generateToken(Map<String, String> payload) {
Date expirationDate = new Date(System.currentTimeMillis() + EXPIRATION_TIME);
return Jwts.builder()
.setClaims(payload)
.setExpiration(expirationDate)
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
}
public static Map<String, String> verifyToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
return new HashMap<>(claims);
}
}
```
以上代码是一个简单的JWT工具类,用于生成和验证JWT令牌。核心方法包括:
1. `generateToken`:生成JWT令牌的方法。传入一个`payload`参数,其中包含要在令牌中存储的数据。方法内部会设置令牌的过期时间,并使用密钥对令牌进行签名,然后返回生成的令牌字符串。
2. `verifyToken`:验证JWT令牌的方法。传入一个令牌字符串作为参数,方法内部会解析令牌并验证签名。如果验证通过,将返回一个包含令牌中数据的`Map`对象。
注意:在实际使用中,你需要将`SECRET_KEY`替换为你自己的密钥,并根据实际需求调整`EXPIRATION_TIME`的值。
希望以上代码对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [详解使用JWT实现单点登录(完全跨域方案)](https://download.csdn.net/download/weixin_38715772/12938468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [Spring Security基于JWT实现SSO单点登录详解](https://download.csdn.net/download/weixin_38697328/12746825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [基于JWT实现单点登录](https://blog.csdn.net/Lyh_ok/article/details/124776718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]