• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

HomeConroller의 핸들러 메소드에서 로그인 정보를 담는 member 객체에 대한 질문입니다.

21.07.23 09:28 작성 조회수 258

7

안녕하세요,

로그인 처리2 - 필터, 인터셉터 파트의 'ArgumentResolver' 활용편에서 궁금한 사항이 있어 질문 글을 작성해 봅니다.

HomeController에서 '/' URL에 대한 핸들러 메소드 선언시 'member' 파라미터에 대해서는 

@Login 어노테이션을 선언하여 직접 구현한 LoginMemberArgumentResolver를 통해

세션에 담긴 로그인 객체를 바인딩(?) 시켜주는 과정을 확인할 수 있었습니다.

만약, HomeController에서 '/' URL 요청 매핑 외 

다른 URL 요청 매핑을 처리할 수 있는 여러 핸들러 메소드가 선언되고,

기획자 또는 클라이언트의 요구사항에 따라 HomeController에서 처리되는 모든 핸들러 메소드에 대해서는 

로그인 객체를 이용하여 무언가 분기 처리를 해야하는 로직이 포함되어 있어야 한다면(분기 처리는 각기 다른 로직을 포함하고 있습니다.)

HomeController에 존재하는 모든 핸들러 메소드의 파라미터로 

'@Login Member member'가 선언이 되어야 할 것 같다라는 생각이 들었습니다.

이 또한 반복적인 코드가 아닐까 싶은데요.

HomeController에서 '전역적'으로 로그인 정보를 포함하고 있는 객체를 선언하고,

이를 핸들러 파라미터로 굳이 선언하지 않아도, 각 핸들러 메소드에서 사용할 수 있는 방법이 있을까요?

P.S

HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 흐름을 생각해 보면...

서블릿 필터 또는 인터셉터를 통해 매 요청에

세션에 담긴 로그인 정보를 핸들러 메소드에 각각 다시 주입(?) 시켜줘야 할 것 같은데 실무에서 보통 이렇게 처리하는지

아니면 다른 방법이 있는지 궁금합니다.

미리 답변 감사드립니다.

답변 1

답변을 작성해보세요.

4

안녕하세요. Henu님^^

결론적으로 그래도 파라미터로 사용하는게 더 좋습니다. 전역적으로 사용하려면 고민거리가 많고, 테스트도 어렵습니다.

그래도 다음을 검색해보시면 아이디어를 얻으실 수 있을거에요^^

Spring RequestContextHolder

감사합니다.

Henu님의 프로필

Henu

질문자

2021.07.23

감사합니다!