Вот мой код:
Это мой JwtTokenValidator класс:
Код: Выделить всё
@Component
@AllArgsConstructor
@NoArgsConstructor
public class JwtTokenValidator extends OncePerRequestFilter {
@Autowired
private JwtService jwtService;
@Override
protected void doFilterInternal(@NonNull HttpServletRequest request,
@NonNull HttpServletResponse response,
@NonNull FilterChain filterChain) throws ServletException, IOException {
final String authHeader = request.getHeader("Authorization");
if (authHeader == null || !authHeader.startsWith("Bearer ")) {
filterChain.doFilter(request, response);
return;
}
String token = authHeader.substring(7);
try {
String email = jwtService.extractEmail(token);
String authorities = jwtService.extractAuthorities(token);
List auth = AuthorityUtils.commaSeparatedStringToAuthorityList(authorities);
Authentication authentication = new UsernamePasswordAuthenticationToken(email, null, auth);
SecurityContextHolder.getContext().setAuthentication(authentication);
filterChain.doFilter(request, response);
} catch (Exception e) {
SecurityContextHolder.clearContext();
throw e;
}
}
}
Код: Выделить всё
@Service
public class JwtService {
private SecretKey key = Keys.hmacShaKeyFor(JwtConstant.SECRET_KEY.getBytes());
public String extractEmail(String token) {
return String.valueOf(extractAllClaims(token).get("email"));
}
public String extractAuthorities(String token) {
return String.valueOf(extractAllClaims(token).get("authorities"));
}
public Claims extractAllClaims(String token){
return Jwts.parserBuilder()
.setSigningKey(key)
.build()
.parseClaimsJws(token)
.getBody();
}
public String generateToken(Authentication authentication){
Collection
Подробнее здесь: [url]https://stackoverflow.com/questions/78531238/autowired-component-null[/url]