sin개발자
214
2020-10-27 14:36:25 작성 2020-10-27 14:45:58 수정됨
2
145

spring security login success redirect 관련


로그인 성공 시 메인 페이지로 돌리려고 합니다.

그냥 메인페이지로 접근시 정상동작하는데

로그인 성공 시 CustomLoginSuccessHandler를 통해

getRedirectStrategy().sendRedirect(request, response, "/hws/mbl/main/mblMainPage.do");

로 보냈습니다.


break포인트 걸었을 때 정상적으로 해당 소스를 지나는걸 확인했구요.

화면도 뜨기는 뜨는데

문제는


login.jsp에 있는 script가 남아있고 login.jsp의 content부분만

메인페이지에 해당하는 jsp의 body태그가 있는 부분만 들어가더라고요...


script, css가 하나도 들어가질 않습니다.


url도 login관련 url로 바뀌질 않더라고요.

제가 기대한 url은 localhost/hws/mbl/main/mblMainPage.do  인데

전혀 아닙니다...


메인페이지로 정상적으로 이동시키고

화면도 정상적으로 뜨게 할려면

response.redirect를 쓰는 걸로 하는데 왜 안될까요??...


도움 부탁드립니다.

0
  • 답변 2

  • 샌애긔
    124
    2020-10-27 14:52:35
    기대한값이 아니시면 대체 무슨값이 올라오신거고, 리스폰스와 리다이렉트는 어떤식으로 활용하셨는지 보여주지 않으면 어떤 도움을 바라시는건지 알아차릴수가 없습니다...
  • sin개발자
    214
    2020-10-27 15:00:53

    loginSuccessHandler

    public class CustomLoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
    	
    	@Autowired
        public CustomLoginSuccessHandler(String defaultTargetUrl) {
            setDefaultTargetUrl("/hws/mbl/main/mblMainPage.do");
        }
    
        @Override
        public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {
            HttpSession session = request.getSession();
            if (session != null) {
                String redirectUrl = (String) session.getAttribute("prevPage");
                if (redirectUrl != null) {
                    session.removeAttribute("prevPage");
    //                getRedirectStrategy().sendRedirect(request, response, redirectUrl);
                    
    //                response.sendRedirect("/hws/mbl/main/mblMainPage.do");
                    
    //                response.setContentType("text/html");
                    getRedirectStrategy().sendRedirect(request, response, "/hws/mbl/main/mblMainPage.do");
                    
    //                RequestDispatcher dispatcher = request.getRequestDispatcher("/hws/mbl/main/mblMainPage.do");
    //                dispatcher.forward(request, response);
                    
    //                super.onAuthenticationSuccess(request, response, authentication);
                } else {
                    super.onAuthenticationSuccess(request, response, authentication);
                }
            } else {
                super.onAuthenticationSuccess(request, response, authentication);
            }
        }
    }


    controller

    /**
    	 * 메인 페이지 조회(Choice)
    	 * @return 메인페이지 정보 Map [key : 항목명]
    	 * 
    	 * @param request
    	 * @param model
    	 * @exception Exception Exception
    	 */
    	@RequestMapping(value = "/hws/mbl/main/mblMainPage.do")
    	public String mblMainPageChoice(HttpServletRequest request, ModelMap model)
    	  throws Exception{
    		String deviceId = (String) request.getParameter("uuid");
    		if(deviceId != null && !deviceId.equals("undefined") && !deviceId.equals("")){ 
    			model.addAttribute("uuid", deviceId);
    		}else{
    			model.addAttribute("uuid", "");
    		}
    		
    		String opt = (String) request.getParameter("opt");
    		if( opt != null && !opt.equals("undefined") && !opt.equals("")){
    			model.addAttribute("opt", opt);
    		}else{
    			model.addAttribute("opt", "");
    		}
    		
    		String newProc = (String) request.getParameter("newProc");
    		if( newProc != null && !newProc.equals("undefined") && !newProc.equals("")){
    			model.addAttribute("newProc", newProc);
    		}else{
    			model.addAttribute("newProc", "");
    		}
    		
    		return "hws/mbl/main/MblMainPageChoice";
    	}


    문제를 다시 말씀드리자면

    login.jsp의 body태그의 내용이 hws/mbl/main/MblMainPageChoice.jsp의 body태그 내용으로 바뀌어 있습니다.


    현재 login.jsp에서 body태그내용을 append하거나 remove하는 소스는 없구요.


    login.jsp에서 body태그의 내용만 바뀌어 있다보니

    script, css가 하나도 적용되질 않아 

    화면이 깨지는 현상입니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.