inflearn logo
강의

Course

Instructor

Spring MVC Part 2 - Backend Web Development Application Techniques

Spring Interceptor - Authentication Check

@requestParam 이 값을 받아오지를 못합니다.

592

gch039152021

3 asked

1

안녕하세요.

프로젝트 진행 중 인터셉터를 사용해서 로그인을 구현하고 있는 도중에 질문을 드립니다.

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 값을 조회해 봐도 그냥 "/" 값만 들어오더라구요....

무엇이 문제인지 잘 모르겠습니다.

 

 

MVC spring

Answer 1

2

gch039152021

[자문자답]

아 원인을 찾았습니다...

(수정후 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 의 차이점이 무엇인지 알 수 있을까요??

0

yh

저도 정확히 어떤 문제인지 잘 모르겠네요. 혹시 아시는 분 있으면 답변 부탁드립니다.

이미지 업로드와 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

49

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