Mam zrobione CustomUserDetailsService
w nim
@Autowired
private UserService userService;
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
User user = userService.findByUsername(s);
...
i userService.findByUsername(s);
działa poprawnie, ale mam również
class TokenAuthenticationService {
@Autowired
private UserService userService;
public void addAuthentication(HttpServletResponse res, String username) {
userService.findByUsername(username);
...
i tutaj wywala NullPointerException
.
TokenAuthenticationService jest używane poprzez
.addFilterBefore(new JWTLoginFilter("/api/auth", authenticationManager()),
UsernamePasswordAuthenticationFilter.class)
następnie
public class JWTLoginFilter extends AbstractAuthenticationProcessingFilter {
...
@Override
protected void successfulAuthentication(
HttpServletRequest req,
HttpServletResponse res, FilterChain chain,
Authentication auth) throws IOException, ServletException {
TokenAuthenticationService toaus = new TokenAuthenticationService();
toaus.addAuthentication(res, auth.getName());
}
Jak to poprawić żeby działało? Moim celem jest zrobić tak aby TokenAuthenticationService
pobierał token z bazy dla danego usera i używał go dla JWT, a gdy wygaśnie to zmienić token na nowy czy takie rozwiązanie będzie dobre?