Commit ed77ab6d by zhangxingmin

日志

parent f0b21d20
......@@ -57,26 +57,28 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
log.info("从HTTP请求中解析JWT令牌(通常从Authorization头获取):{}",token);
// 2. 检查令牌是否存在且有效
if (token != null && tokenProvider.validateToken(token)) {
// 3. 从JWT令牌中提取用户唯一标识(业务ID)
String userBizId = tokenProvider.getUserBizIdFromToken(token);
// 4. 根据用户唯一标识查询用户详细信息(包括权限信息)从缓存里面获取
UserDetails userDetails = redisUtil.getCacheObject(RedisConstants.LOGIN_USER + userBizId);
if (Objects.isNull(userDetails)) {
throw new UsernameNotFoundException("用户登录信息已失效,请重新登录!");
}
if (token != null) {
if (tokenProvider.validateToken(token)){
// 3. 从JWT令牌中提取用户唯一标识(业务ID)
String userBizId = tokenProvider.getUserBizIdFromToken(token);
// 4. 根据用户唯一标识查询用户详细信息(包括权限信息)从缓存里面获取
UserDetails userDetails = redisUtil.getCacheObject(RedisConstants.LOGIN_USER + userBizId);
if (Objects.isNull(userDetails)) {
throw new UsernameNotFoundException("用户登录信息已失效,请重新登录!");
}
// UserDetails userDetails = queryUserDetails(userBizId);
// 5. 创建Spring Security认证对象
// - userDetails: 包含用户身份和权限信息
// - null: 凭证(密码),JWT认证中不需要
// - userDetails.getAuthorities(): 用户的权限集合
UsernamePasswordAuthenticationToken authentication =
new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
// 5. 创建Spring Security认证对象
// - userDetails: 包含用户身份和权限信息
// - null: 凭证(密码),JWT认证中不需要
// - userDetails.getAuthorities(): 用户的权限集合
UsernamePasswordAuthenticationToken authentication =
new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
// 6. 将认证对象设置到SecurityContext中,表示用户已认证,这里设置后续接口能直接拿到登录用户信息
SecurityContextHolder.getContext().setAuthentication(authentication);
// 6. 将认证对象设置到SecurityContext中,表示用户已认证,这里设置后续接口能直接拿到登录用户信息
SecurityContextHolder.getContext().setAuthentication(authentication);
}
}
// 7. 继续执行后续过滤器链(无论是否认证都要继续处理请求)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment