스프링 보안 3.2.5로 보안을 설정하려는 웹 사이트 섹션 (/secure
아래의 모든 항목)이 있습니다.XML 구성의 스프링 보안이 사용자를 인증하지 않습니다.
@Controller
@RequestMapping(value = "/secure")
public class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String getLogin() {
return "secure/login";
}
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String getHome() {
return "secure/home";
}
}
및 로그인 페이지 내부 코드 :
나는이 컨트롤러가있는 사용자 정의 로그인 양식을 사용하려고 해요<http use-expressions="true">
<intercept-url pattern="/secure/login" access="permitAll" />
<intercept-url pattern="/secure/**" access="isAuthenticated()" />
<form-login default-target-url="/secure/home" always-use-default-target="true" login-page="/secure/login" />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user" password="password" authorities="ROLE_SECURE" />
</user-service>
</authentication-provider>
</authentication-manager>
: 나는 다음과 같은 XML 구성을 사용하고 있습니다
<form method="POST" action="<c:url value="/secure/login" />">
username: <input type="text" name="username" /><br/>
password: <input type="password" name="password" /><br/>
<input type="submit" value="Login" />
</form>
은 내가 web.xml
프록시 필터가 위임 ContextLoaderListener
과 springSecurityFilterChain
를 사용하여로드 된 보안 컨텍스트가 또한 설정.
/secure/login
으로 리디렉션되는 /secure
URL에 액세스하려고하면 내 컨트롤러가 getLogin
메서드에서 호출되고 로그인 페이지가 표시됩니다. 그게 다 괜찮아. 이제
내 문제 : 나는 로그인 양식을 제출 어떤가 LoginController
로 직접 전송됩니다 내가 컨트롤러에는 POST 처리기가 없기 때문에 POST는 의미가 지원되는 방법이 아니라고 말하는 예외가 .
내가 컨트롤러에서이 같은 방법을 추가하는 경우 :
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String postLogin() {
return "redirect:/secure/home";
}
나는 더 이상 오류가 발생하지 않습니다하지만 내 postLogin
방법 호출 느릅 나무는 /secure/login
에 저를 리디렉션하는 /secure/home
인증되지 않은 날을 보내고 난 원점으로 돌아가다.
내가 뭘 잘못하고 있는지 모르겠다. 내가 온라인으로 보는 모든 예제는 Java로 구성되어 있으며 사용하지 않는 것이 좋습니다. 일부 워크 플로는 일부 URL 경로 (본인의 경우 /secure
)가 아닌 응용 프로그램의 컨텍스트에서 사용됩니다.
무엇이 누락 되었습니까?