User 세션객체에 IP주소를 어디서 set해 주면 좋을까요?
- 작성자 :
- 송*헌
- 작성일 :
- 2010-07-28 13:04:55
- 조회수 :
- 3,408
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
샘플프로젝트랑 공통컴포넌트예제를 살펴보면.
User 세션객체에 ip 프로퍼티는 있는데.. 값을 넣어주는데가 없네요..
EgovUsersByUsernameMapping(를 구현한) 객체에서 세션객체를 생성하는데..
여기에 있는 mapRow() 메소드 구현할땐 IP주소를 담아줄 방법이 없구요..
아님.. context-security.xml 에 설정한
<form-login> 에 default-target-url 속성으로 지정한 url이 처리될때
ip주소를 넣어주는 방법이 있지만.. 이건좀. 막짠.. 프로그램같은 느낌이 들구요
알려주세요..
User 세션객체에 ip 프로퍼티는 있는데.. 값을 넣어주는데가 없네요..
EgovUsersByUsernameMapping(를 구현한) 객체에서 세션객체를 생성하는데..
여기에 있는 mapRow() 메소드 구현할땐 IP주소를 담아줄 방법이 없구요..
아님.. context-security.xml 에 설정한
<form-login> 에 default-target-url 속성으로 지정한 url이 처리될때
ip주소를 넣어주는 방법이 있지만.. 이건좀. 막짠.. 프로그램같은 느낌이 들구요
알려주세요..
A
안녕하세요.. 송정헌님..
HttpServletRequest 객체를 참조할 수 있는 부분이면 가능할 것 같습니다.
Servlet의 filter, Srping MVC의 HandlerAdapter 또는 Interceptor 등입니다.
Interceptor를 예를 들면.. 다음과 같이 적용하시면 됩니다.
public class EgovUserDetailsInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (EgovUserDetailsHelper.isAuthenticated()) {
EgovUserDetailsVO userVO = (EgovUserDetailsVO)EgovUserDetailsHelper.getAuthenticatedUser();
userVO.setUserIp(request.getRemoteAddr());
}
return true;
}
}
성능 등의 목적으로 특정 URL 부분(로그인되고 나서)만 적용하시려면 실행환경의 "SimpleUrlAnnotationHandlerMapping"를 적용하시면 됩니다.
참조 : http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:ptl:handlermapping#SimpleUrlAnnotationHandlerMapping
그럼.. 즐거운 하루되십시오.
감사합니다.
HttpServletRequest 객체를 참조할 수 있는 부분이면 가능할 것 같습니다.
Servlet의 filter, Srping MVC의 HandlerAdapter 또는 Interceptor 등입니다.
Interceptor를 예를 들면.. 다음과 같이 적용하시면 됩니다.
public class EgovUserDetailsInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (EgovUserDetailsHelper.isAuthenticated()) {
EgovUserDetailsVO userVO = (EgovUserDetailsVO)EgovUserDetailsHelper.getAuthenticatedUser();
userVO.setUserIp(request.getRemoteAddr());
}
return true;
}
}
성능 등의 목적으로 특정 URL 부분(로그인되고 나서)만 적용하시려면 실행환경의 "SimpleUrlAnnotationHandlerMapping"를 적용하시면 됩니다.
참조 : http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:ptl:handlermapping#SimpleUrlAnnotationHandlerMapping
그럼.. 즐거운 하루되십시오.
감사합니다.