用java 写一个sessionId做会话认证,有时效的
时间: 2024-03-01 17:54:09 浏览: 143
实现session身份认证机制
好的,下面是一个用Java实现的sessionId生成和验证代码示例:
```java
import java.util.UUID;
import java.time.Instant;
public class SessionUtils {
private static final int SESSION_EXPIRATION = 3600; // 会话过期时间为1小时(单位:秒)
public static String generateSessionId() {
String sessionId = UUID.randomUUID().toString(); // 生成一个UUID作为sessionId
long expirationTime = Instant.now().getEpochSecond() + SESSION_EXPIRATION; // 设置sessionId的过期时间
return sessionId + ":" + expirationTime;
}
public static boolean isSessionValid(String sessionId) {
long expirationTime = Long.parseLong(sessionId.split(":")[1]); // 从sessionId中取出过期时间
return Instant.now().getEpochSecond() < expirationTime; // 如果当前时间还未超过过期时间,则sessionId有效
}
}
```
在`generateSessionId()`方法中,我们使用Java内置的`UUID`类生成一个唯一的UUID,然后使用Java 8的`Instant`类获取当前时间并加上过期时间,最终将sessionId和过期时间进行拼接并返回。
在`isSessionValid()`方法中,我们从sessionId中取出过期时间进行比较,如果当前时间还未超过过期时间,则sessionId有效。
需要注意的是,以上代码中使用的时间单位为秒,如果需要更高的时间精度,可以使用`Instant.now().toEpochMilli()`获取当前时间的毫秒数,以及将过期时间乘以1000转换为毫秒。
阅读全文