@requestParam 이 값을 받아오지를 못합니다.
592
작성한 질문수 3
안녕하세요.
프로젝트 진행 중 인터셉터를 사용해서 로그인을 구현하고 있는 도중에 질문을 드립니다.
String requestURI = request.getRequestURI();
HttpSession session = request.getSession();
log.info("인증 체크 인터셉터 실행 {}",requestURI);
if(session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null){
log.info("미인증 사용자 요청");
response.sendRedirect("/login?redirectURL=" + requestURI);
return false;
}
현재 인터셉터는 강의 내용대로 sendRedirect 를 사용해서 로그인이 안된 상태에서 처음 접했던 페이지로 이동하게끔 해놨습니다.
@PostMapping("/login")
public String loginV3(@Valid LoginForm loginForm, BindingResult result,
HttpServletRequest request, @RequestParam(defaultValue = "/") String redirectURL){
if(result.hasErrors()){
return "login/loginForm";
}
Member loginMember = loginService.login(loginForm.getLoginId(), loginForm.getPassword());
if(loginMember==null){
result.reject("loginFail","아이디 또는 비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
//로그인처리
HttpSession session = request.getSession();
session.setAttribute(SessionConst.LOGIN_MEMBER,loginMember);
return "redirect:" + redirectURL;
}
그리고 login 컨트롤러에도 그냥 똑같이 정의를 해 놓았는데 로그인을 수행하면 처음 접했던 곳으로 가는 것이 아니라 그냥 home으로 가버립니다. 그래서 디버깅을 통해 @RequestParam 의 redirect 값을 조회해 봐도 그냥 "/" 값만 들어오더라구요....
무엇이 문제인지 잘 모르겠습니다.
답변 1
2
[자문자답]
아 원인을 찾았습니다...
(수정후 loginForm.html)
<form action="/login" th:object="${loginForm}" method="post">
<div th:if="${#fields.hasGlobalErrors()}">
<p class="field-error" th:each="err : ${#fields.globalErrors()}"
th:text="${err}">전체 오류 메시지</p>
</div>
<div>
<label for="loginId">로그인 ID</label>
<input type="text" id="loginId" th:field="*{loginId}" class="form-control"
th:errorclass="field-error">
<div class="field-error" th:errors="*{loginId}" />
</div>
<div>
<label for="password">비밀번호</label>
<input type="password" id="password" th:field="*{password}"
class="form-control"
th:errorclass="field-error">
<div class="field-error" th:errors="*{password}" />
</div>
<hr class="my-4">
<div class="row">
<div class="col">
<button class="w-100 btn btn-primary btn-lg" type="submit">
로그인</button>
</div>
<div class="col">
<button class="w-100 btn btn-secondary btn-lg"
onclick="location.href='items.html'"
th:onclick="|location.href='@{/}'|"
type="button">취소</button>
</div>
</div>
</form>
제가 개인적으로 loginForm 의 action을 /login 으로 바꾸어주었었습니다.
이 부분이 문제였습니다.
다시 action="~" th:action 으로 수정해주었더니 올바르게 값을 가져오는 것을 확인할 수 있었습니다.
+ 혹시 저 action 의 차이점이 무엇인지 알 수 있을까요??
이미지 업로드와 db 트랜잭션 묶는법
0
50
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
60
2
MessageSourceTest 코드
0
50
1
인터셉터 에러 설정
0
50
1
resolveArgument()메서드 질문
0
58
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
64
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
134
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
93
3
pdf 오타 문의
0
58
1
ItemUpdateForm 검증 관련 질문입니다.
0
52
1
22page 링크 주소 변경
0
59
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
53
1
섹션3번 수업에 대한 질문입니다.
0
85
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
87
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
66
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
143
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
66
1
톰캣 에러 페이지가 안보입니다.
0
108
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
81
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
120
2
ApiExceptionController 질문드립니다.
0
64
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
67
1
MemberRepository 필드의 fianl 선언 유무
0
85
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
60
1





