반응형
이전글 : [Spring Security] 인증 이후 핸들러 설정
이전에 구현 한 이후에 ajax로 response를 받게 되면 JSP가 파싱되어 웹페이지에 나오지 않고 화면에서의 반응은 없지만 console.log로 확인해보면 JSP코드가 보여진다.
이것을 JSP화면으로 변경하는 작업을 수행하려고 한다.
JSP코드가 파싱되어서 동작해야하는데 그 부분이 안되는 것으로 파악했다.
따라서 이전에 작업했던 Handler부분을 수정했다.
...
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException {
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
response.setContentType("application/json;charset=UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
Map<String, Object> responseData = new HashMap<>();
String targetUrl = determineTargetUrl(authentication); // 사용자 역할에 따라 URL 결정
responseData.put("redirectUrl", targetUrl); // 리디렉션할 URL을 JSON 응답에 포함
new ObjectMapper().writeValue(response.getWriter(), responseData);
} else {
handle(request, response, authentication);
}
clearAuthenticationAttributes(request);
}
...
이렇게 하고 로그인관련 ajax에서는 redirectUrl을 이렇게 사용한다.
$.ajax({
type: 'POST',
url: '/ajax/loginProcess',
cache: false,
contentType: 'application/json',
data: JSON.stringify(serializedValues),
success: function (response) {
if(response.redirectUrl) {
window.location.href = response.redirectUrl;
}else {
console.log("Redirect URL is missing in the response");
}
}
});
이렇게 하면 Map으로 정의된 response에서 redirectUrl이 계정 권한에 따라서 변경되며 접속이 가능해진다.
반응형
'Backend > Spring | SpringBoot' 카테고리의 다른 글
[Spring Security] Onceperrequestfilter vs Usernamepasswordauthenticationfilter (0) | 2024.04.02 |
---|---|
[Spring Security] JWT토큰 적용하기 (0) | 2024.04.01 |
[Spring Security] 인증 이후 핸들러 설정 (0) | 2024.03.27 |
[Spring Security] 인증 후 처리 중 만난 에러 (0) | 2024.03.25 |
[Spring Security] 인증 중 발생에러 (0) | 2024.03.21 |