커스텀필터 인증 성공 시 핸들러 메소드 진입 가능 여부
358
작성한 질문수 21
안녕하세요 문득 궁금한점이 있어서 여쭤봅니다
@PostMapping("/login")
@ResponseBody
public String login() {
return "로그인 성공!!!";
}
위와 같은 단순 핸들러 메소드가 존재한다고 할때, 스프링 시큐티리의 커스텀 필터가 성공한 이후(successHandler가 실행된 이후)에도 저 메소드가 실행되지 않습니다
필터 인증에 실패한 경우엔 필터레이어에서 예외를 던지면서 그 이후 로직이 진행되지 않게 처리하는게 맞는것 같으나
필터 인증에 성공한 경우엔 필터를 거쳐서 핸들러 메소드를 실행하는것이 맞다고 생각했습니다
근데 생각과는 다르게 successHandler에서 objectmapper.writeValue메소드가 끝나고 나니 바로 클라이언트에게 응답이 갔습니다
핸들러 메소드까지 실행되게 하고 싶은데 방법이 있나요?
답변 3
3
인증에 성공한 후 SuccessHandler 보면 response 에서 헤더값을 설정한 후 특별한 액션을 취하지 않고 있는 것 같습니다.
public class JwtAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
@Autowired
JwtUtil jwtUtil;
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
String principal = (String) authentication.getPrincipal();
List<String> roles = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
response.setHeader("X-AUTH-TOKEN", jwtUtil.createToken(principal, roles));
response.setStatus(HttpServletResponse.SC_OK);
}
}
가령
@PostMapping("/login")
public String login(UserEntity userEntity) {
return "로그인 성공!!!";
}
로 호출이 되기 위해서는
response.redirect("/login") 과 같은 구문이 추가 되어야 하는데 아무런 호출구문이 없습니다.
더군다나 post 방식이라 리다이렉트도 먹히지 않습니다.
또한 현재 통신 방식이 Rest 로 되어 있기 때문에 리다이렉트 방식은 통신이 다시 재개되는 것이기 때문에 올바른 처리가 아닙니다.
JwtAuthenticationSuccessHandler 에서 인증을 성공한 이후에는 ObjectMapper 로 전송할 도메인을 포맷팅한 후에 다시 클라이언트로 응답하는 구문이 추가 되어야 하고 응답을 받은 클라이언트에서 다시 Post 로 호출하는 식으로 처리가 되어야 할 것 같습니다.
Http Form 방식 으로 통신하는 것과 Rest 방식으로 통신하는 방식을 구분해서 구현해야 할 것 같습니다.
지금은 두가지를 방식을 동시에 혼용하고자 하는 것 같은데요
가능은 하지만 정확한 프로세스를 설계하고 진행해야 할 것 같습니다.
0
ajax로그인 학습을 바탕으로 만들어본 jwt로그인입니다
포스트맨을 사용하여 아이디와 비밀번호를 넣고 post방식으로 전송하면
필터 인증은 통과하여 jwt토큰은 발행되는데
/login의 "로그인 성공!!!!" 이부분은 아예 로직조차 타질 않습니다
시큐리티 공부 버전 질문
0
179
1
[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈
0
187
1
AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우
0
180
1
강의 코드가 왜이렇게 뒤죽박죽인가요...
0
255
1
메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..
0
239
1
파라미터값이 넘어가지 않습니다 ....
0
376
1
security filterChain 설정 질문이 있습니다.
0
333
1
소스 부분 질문 드립니다.
0
210
2
섹션4 7번 강의 문제가 있는거 같네요.
0
345
2
파일이 수시로 이름이 바껴있네요 ㄷㄷ
0
306
1
HttpSessionSecurityContextRepository를 사용안하는 문제
0
557
2
error , exception 이 잘 안됩니다.
0
284
2
thymeleaf tag 질문합니다.
0
198
2
버전업하면서 deprecated된 것들이 너무많아요
0
478
1
spring security 패치 관련
0
438
1
모바일을 사용할때 토큰말고 세션
0
855
2
DB 연동한 인가 부분에 대한 질문입니다!
0
265
1
Ajax방식도 똑같이 Session방식을 사용하는건가요?
0
308
1
Config 파일 생성 시 질문이 있습니다.
0
228
1
강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..
1
435
2
403 에러 뜹니다.
0
814
2
login_proc의 존재에 대한 간략한 설명입니다
0
277
1
top.html에 로그인 링크를 만들어서 로그인을 해봤습니다
0
288
2
안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!
0
192
1





