<bean id="sampleInterceptor" class="com.macaronics.www.util.interceptor.SampleInterceptor" />
<bean id="loginInterceptor" class="com.macaronics.www.util.interceptor.LoginInterceptor" />
<bean id="authInterceptor" class="com.macaronics.www.util.interceptor.AuthInterceptor"/>
<bean id="logOutIntercepor" class="com.macaronics.www.util.interceptor.LogOutIntercepor" />
<!-- 인터셉터 -->
<beans:import resource="interceptor-context.xml"/>
<interceptors>
<interceptor>
<mapping path="/**"/>
<beans:ref bean="sampleInterceptor"/>
</interceptor>
<interceptor>
<mapping path="/member/login.do"/>
<beans:ref bean="loginInterceptor"/>
</interceptor>
<interceptor>
<mapping path="/board/write.do"/>
<beans:ref bean="authInterceptor"/>
</interceptor>
<interceptor>
<mapping path="/member/logout"/>
<beans:ref bean="logOutIntercepor" />
</interceptor>
</interceptors>
public class SampleInterceptor extends HandlerInterceptorAdapter{
private static final Logger logger=LoggerFactory.getLogger(SampleInterceptor.class);
//요청 전 실행
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
request.setAttribute("ServerEnvironment", SqlServerEnvironment.SQL );
saveDest(request);
return true;
}
private void saveDest(HttpServletRequest request){
String uri =request.getRequestURI();
String query =request.getQueryString();
if(query==null || query.equals("null")){
query="";
}else{
query ="?"+query;
}
if(request.getMethod().equals("GET")){
logger.info("logoutDest : " +(uri +query));
//로그아웃 페이지면 저장 하지 않는다.
String saveDest =uri+query;
//displayFile 이미지를 뜻하는 uri 가 있으면 저장 하지 않는다.
if(saveDest.equals("/member/logout") || saveDest.equals("/member/loginform.do")
|| saveDest.equals("/member/login.do") || !saveDest.contains(".do")){
//저장 하지 않는다.
}else{
request.getSession().setAttribute("dest", saveDest);
logger.info("saveLogoutDest : " +(uri +query));
}
}
}
//요청 후에 실행
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
}
Object dest=session.getAttribute("dest");
return "redirect:"+(dest !=null ? (String)dest : "/");
@SuppressWarnings("unused")
@RequestMapping(value="/login.do", method=RequestMethod.POST)
public String memberLogin(@ModelAttribute MemberDTO dto , HttpSession session , RedirectAttributes rttr){
logger.info("login" + dto.toString());
//이메일 체크 후 정보를 가져 온다.
MemberDTO member =memberService.checkLogin(dto);
logger.info("DB 암호 해독 패스워드 " + member.getUserpw());
logger.info("유저 아이디 " + member.getUserid());
if(member !=null){
// 널이 아니면 이메일이 존재 하면 등록된 가입자 이다.
//패스워드 매치를 통해 다시 확인 한다
if(passwordEncoding.matches(dto.getUserpw(), member.getUserpw())){
// 로그인이 가능한 유저 확인
MemberDTO loginUser = memberService.viewMember(member.getUserid());
//가져온 member 를 세션에 저장한다.
session.setAttribute("loginUser", loginUser);
Object dest=session.getAttribute("dest");
return "redirect:"+(dest !=null ? (String)dest : "/");
}else{
//비밀 번호 오류
rttr.addFlashAttribute("messageEmail", dto.getEmail());
rttr.addFlashAttribute("errorMessage", "비밀 번호가 틀립니다.");
return "redirect:loginform.do";
}
}
//등록 되지 않은 이메일
rttr.addFlashAttribute("errorMessage", "등록되지 않은 이메일 입니다.");
return "redirect:loginform.do";
}
@RequestMapping(value="/logout", method=RequestMethod.GET)
public String memberLogOut(HttpSession session, HttpServletRequest request){
Object dest=session.getAttribute("dest");
session.invalidate();
return "redirect:"+(dest !=null ? (String)dest : "/");
}
댓글 ( 4)
댓글 남기기