From 1acf9a48021d0af1d81fdf3ed8fcf8dffd020f6b Mon Sep 17 00:00:00 2001 From: hongjli <3117313295@qq.com> Date: 星期二, 15 四月 2025 14:20:51 +0800 Subject: [PATCH] 登录,注册,获取用户信息---接口 --- src/main/java/com/weiwojc/security/JwtAuthenticationFilter.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/weiwojc/security/JwtAuthenticationFilter.java b/src/main/java/com/weiwojc/security/JwtAuthenticationFilter.java new file mode 100644 index 0000000..25783e8 --- /dev/null +++ b/src/main/java/com/weiwojc/security/JwtAuthenticationFilter.java @@ -0,0 +1,57 @@ +package com.weiwojc.security; + +import com.weiwojc.utils.JwtUtils; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; +import java.util.ArrayList; + +@Component +@RequiredArgsConstructor +public class JwtAuthenticationFilter extends OncePerRequestFilter { + + private final JwtUtils jwtUtils; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + + String token = request.getHeader("token"); + + if (token == null || token.isEmpty()) { + filterChain.doFilter(request, response); + return; + } + + if (!jwtUtils.validateToken(token)) { + filterChain.doFilter(request, response); + return; + } + + String username = jwtUtils.getUsernameFromToken(token); + Long userId = jwtUtils.getUserIdFromToken(token); + + if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { + UserDetails userDetails = new JwtUserDetails(userId, username); + + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken( + userDetails, null, new ArrayList<>()); + + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + + SecurityContextHolder.getContext().setAuthentication(authentication); + } + + filterChain.doFilter(request, response); + } +} \ No newline at end of file -- Gitblit v1.9.3