|
|
package com.aurora.service;
|
|
|
|
|
|
import com.aurora.model.dto.UserDetailsDTO;// 导入用户详情数据传输对象(UserDetailsDTO),用于封装认证用户的详细信息(如用户名、权限列表、登录时间等)
|
|
|
import io.jsonwebtoken.Claims;// 导入 JWT 声明接口(Claims),代表 JWT Token 的负载部分,包含 token 中存储的键值对信息(如用户标识、签发时间等)
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;// 导入 HTTP Servlet 请求对象(HttpServletRequest),用于获取客户端请求中的头信息、参数等,以提取 token
|
|
|
//Token 服务通常用于身份验证和授权
|
|
|
//主要功能包括:为登录用户创建令牌、验证令牌有效性、解析令牌获取用户信息、管理令牌生命周期等
|
|
|
public interface TokenService {
|
|
|
/**
|
|
|
* 根据用户详细信息创建 JWT 令牌,该方法将用户的核心信息(如用户名、角色)嵌入令牌负载(Payload)中,并生成数字签名确保令牌完整性
|
|
|
* @param userDetailsDTO 用户详情数据传输对象,包含生成令牌所需的用户身份信息(如用户名、ID、权限等)
|
|
|
* @return String 生成的 JWT 令牌字符串,通常包含头部(Header)、负载(Payload)和签名(Signature)三部分
|
|
|
*/
|
|
|
String createToken(UserDetailsDTO userDetailsDTO);
|
|
|
/**
|
|
|
* 根据主题(Subject)创建 JWT 令牌(简化版),该方法适用于仅需标识主题场景,令牌负载可能仅包含主题信息,适用于简单认证或临时令牌生成
|
|
|
* @param subject 令牌主题,通常是一个唯一标识符(如用户ID、客户端ID),用于标识令牌的归属主体
|
|
|
* @return String 生成的 JWT 令牌字符串
|
|
|
*/
|
|
|
String createToken(String subject);
|
|
|
//刷新用户令牌(通常用于延长令牌有效期),该方法检查现有令牌的有效期,若即将过期则生成新令牌并更新其过期时间,用户无需重新登录
|
|
|
void refreshToken(UserDetailsDTO userDetailsDTO);
|
|
|
//续签令牌(可能涉及重新生成令牌或更新令牌关键信息),与刷新不同,续签可能因安全策略(如密钥轮换)或用户信息变更(如权限更新)而重新生成令牌
|
|
|
void renewToken(UserDetailsDTO userDetailsDTO);
|
|
|
/**
|
|
|
* 解析 JWT 令牌并获取其声明(Claims)信息,该方法验证令牌的签名有效性,并解析出令牌负载中存储的所有声明(键值对),如用户标识、签发时间、过期时间等
|
|
|
* @param token 待解析的 JWT 令牌字符串
|
|
|
* @return Claims 令牌的声明集合对象,可通过其 get() 方法获取具体声明值(如 claims.get("username", String.class))
|
|
|
*/
|
|
|
Claims parseToken(String token);
|
|
|
/**
|
|
|
* 从 HTTP 请求中提取令牌并解析为完整的用户详情信息
|
|
|
* 该方法通常从请求头(如 Authorization: Bearer <token>)或请求参数中提取令牌,然后解析令牌并查询数据库或缓存补全用户详细信息
|
|
|
* @param request HTTP Servlet 请求对象,用于获取携带令牌的请求头(如 Authorization)或参数(如 access_token)
|
|
|
* @return UserDetailsDTO 用户详情数据传输对象,包含从令牌和系统中获取的完整用户信息(如权限列表、用户状态等)
|
|
|
*/
|
|
|
UserDetailsDTO getUserDetailDTO(HttpServletRequest request);
|
|
|
/**
|
|
|
* 删除(或失效)指定用户的登录状态及相关令牌
|
|
|
* 该方法通常用于用户主动登出或管理员强制下线,通过移除缓存(如Redis)中的用户令牌映射,使该用户的所有现有令牌立即失效
|
|
|
* @param userId 用户主键ID,指定要登出的用户标识
|
|
|
*/
|
|
|
void delLoginUser(Integer userId);
|
|
|
|
|
|
}
|