2011-01-27 4 views
3

웹 응용 프로그램을 spring_tiles하고 지금 봄 보안을 추가하려고 :봄 + 봄 보안 + 타일. 타일 ​​페이지 정의로 form-login을 설정하는 방법은 무엇입니까? 내가 가진

내 TilesConfig.xml의 평화

:

<bean id="urlMapping" 
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="interceptors"> 
    <list> 
    <ref bean="openSessionInViewInterceptor" /> 
    </list> 
    </property> 
    <property name="mappings"> 
    <props> 
    <prop key="/main.htm">mainController</prop> 
    <prop key="/category.htm">viewCategoryController</prop> 
    <prop key="/good.htm">goodController</prop> 
    <prop key="/registration.htm">registrationController</prop> 
    <prop key="/login.htm">?</prop> 
    </props> 
    </property> 
</bean> 
: 여기

<definition name="loginPage" extends="commonPage"> 
    <put-attribute name="body" value="/WEB-INF/tiles/jsp/login_body.jsp" /> 
</definition> 

내 봄 매핑 부분을 제공

다음은 applicationContext-security.xml의 일부입니다.

<http auto-config='true'> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
    <intercept-url pattern="/css/**" filters="none"/> 
    <intercept-url pattern="/js/**" filters="none"/> 
    <intercept-url pattern="/login.htm*" filters="none"/> 
    <form-login login-page="/login.htm" /> 
</http> 

하지만 매핑에 타일 정의를 어떻게 설정해야하는지 궁금합니다. 다른 모든 페이지에서는 컨트롤러를 사용했지만 스프링 보안이 대신 그렇게하기 때문에 loginController를 사용하지 않아야한다고 생각합니다.

그래서, 여기 내 질문 : 봄 보안 내에서 /login.htm 타일 loginPage 매핑하는 방법?

답변

0

나는 그것을 할 방법을 찾았습니다.

<bean id="loginController" 
    class="org.springframework.web.servlet.mvc.ParameterizableViewController"> 
    <property name="viewName" value="loginPage" /> 
</bean> 

을 그리고 매핑에 따라 그 추가 : 스프링 설정에서 나는이를 추가 한

<prop key="/login.htm">loginController</prop> 

타일 및 보안 구성이 동일하게 유지했다. views.xml에서

<form-login login-page="/login" authentication-failure-url="/login/error" /> 

가 로그인보기를 선언 다음과 같이

보안의 context.xml에서
@Controller 
@RequestMapping("/login") 
public class LoginController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String login(Locale locale, Model model) { 
     return "login"; 
    } 

    @RequestMapping(value = "/error", method = RequestMethod.GET) 
    public String loginWithError(Locale locale, Model model) { 
     model.addAttribute("error", true); 
     return "login"; 
    } 
} 

는, 폼 로그인을 구성

2

기본적으로 타일에 봄 보안을위한 구성에는 특별한 것이 없습니다. 로그인 페이지 타일의 이름 loginPage 경우

, 나는 당신이 당신의 당신이 봄 보안을 사용하는 경우 applicationContext-security.xml

<intercept-url pattern="/loginPage" filters="none"/> 
<form-login login-page="/loginPage" /> 

, 로그인 페이지가있을 것 POST URL에 다음과 유사한 있어야한다 생각 이는 /j_spring_security_check (기본값)입니다. 이것은 loginController과 같습니다.

+0

저는 이것을 시도해 보았습니다. 타일보기를 사용하는 대신 http : // localhost : 8080/myapp/loginPage로 리디렉션했습니다. 하지만 그걸 깨닫는 방법을 찾았습니다 - 답을보세요 ... 저는 봄에 대한 지식이 없습니다 - 문제였습니다 :) – Ananda

1

또 다른 옵션은 다음과 같은 컨트롤러를 가지고있다 :

<definition name="login" extends="template"> 
    <put-attribute name="title" value="Nuevo Usuario"/> 
    <put-attribute name="body" value="/login.jsp"/> 
</definition> 

마지막으로 login.jsp 파일에 오류가 있음을 표시하려면 다음 코드를 사용하십시오.

<c:if test="${not empty error}"> 
    <font color="red"> Error al ingresar. <br /> Motivo : 
     ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message} 
    </font> 
</c:if>