2013-04-10 2 views
0

일부 오류 메시지와 함께 인증에 실패하면 로그인 페이지로 다시 연결하려고합니다. 나는 우리가 어떤 종류의 매개 변수를 /loginsecurity-context.xml에 전달하고 이것이 인증되지 않았다고 말하면 어떤 오류 텍스트를 첨부하는지 궁금하다.스프링 보안 : 로그인 인증 컨트롤러

<security:form-login login-page="/login" 
        username-parameter="email" 
        password-parameter="password" 
        default-target-url="/member/" 
        authentication-failure-url="/login"/> 

/login은 실제로 ModelAndView를 반환하기위한 컨트롤러입니다.

답변

4

은 단순히이 같은 authentication-failure-url에 쿼리 매개 변수를 추가하십시오 :

<security:form-login login-page="/login" 
        username-parameter="email" 
        password-parameter="password" 
        default-target-url="/member/" 
        authentication-failure-url="/login?error=true" /> 

그런 다음, 로그인 처리기 메서드가 선택 쿼리 매개 변수를받을 수 있으며, 이에 따라 응답을 조작 할 수 있습니다. 이 줄의 어떤 것 :

@RequestMapping(value = "/login", method = RequestMethod.GET) 
public String getLoginPage(
     @RequestParam(required = false) boolean error, 
     ModelMap model) { 

    model.put("error", error ? "You have entered an invalid username or password!" : ""); 

    return "loginpage"; 
} 
1

AuthenticationFailureHandler는 AuthenticationException에 따라 다르게 반응합니다.

<security:form-login login-page="/login" 
    username-parameter="email" 
    password-parameter="password" 
    default-target-url="/member/" 
    authentication-failure-handler-ref="myAuthenticationFailudeHandler"/> 

는 예를 들어, 그것은 .../로그인 사용자를 리디렉션 할 수

그런 다음 당신은 다른 오류 코드에 반응하는 컨트롤러를 수정할 수의 errorCode = errorCode1 :

@RequestMapping(value = "/login", method = RequestMethod.GET) 
public String getLoginPage(
     ..., 
     @RequestParam(value="errorCode", required = false) String errorCode, 
     Model model, 
     ...) { 
    if (errorCode != null) { 
     model.put("error", translateErrorCode(errorCode)); 
    } 
    ... 
1

I 일반적으로이

<security:form-login login-page="/" authentication-failure-url="/myapp/auth/login?error=true" default-target-url="/myapp/main/default"/> 

그리고 컨트롤러가 수행

@RequestMapping(value = "/auth/login", method = RequestMethod.GET) 
public ModelAndView indexp(@RequestParam(value = "error", required = false) boolean error, ModelMap model, Principal principal) { 
ModelAndView mv = new ModelAndView("view"); 
// return your view.... 
} 

매개 변수는 오류 메시지를 표시하는 데 도움이됩니다.