Я пытаюсь реализовать пользовательскую страницу входа для использования в моем приложении JSF 2.0. Я использую Spring Security 3.0.5 и после входа пользователя, страница не перенаправляется правильно. Вместо того, чтобы перейти на запрашиваемую страницу (localhost: 8080 / erp-web), она идет к следующему:
http://localhost:8080/erp-web/javax.faces.resource/forms/forms.js.xhtml?ln=primefaces&v=2.2.1
Это моя страница JSF:
<h:form prependId="false">
<h:panelGroup layout="block" class="hrgi-dialog-content hrgi-div-form clearfix">
<p:focus/>
<h:outputLabel for="j_username"/>
<p:inputText id="j_username" value="#{loginBean.usuario}" required="true"/>
<h:outputLabel for="j_password"/>
<h:inputSecret id="j_password" value="#{loginBean.senha}" required="true"/>
<h:commandButton id="submit" type="submit" value="OK" action="#{loginBean.submit}"/>
</h:panelGroup>
</h:form>
Это используемый боб:
public class LoginBean {
private String usuario;
private String senha;
public String submit() throws IOException, ServletException {
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
RequestDispatcher dispatcher = ((ServletRequest) context.getRequest()).getRequestDispatcher("/j_spring_security_check");
dispatcher.forward((ServletRequest) context.getRequest(), (ServletResponse) context.getResponse());
FacesContext.getCurrentInstance().responseComplete();
return null;
}
/*getters and setters here*/
}
Наконец, это мой весенний конфигурационный файл безопасности:
<http auto-config="true">
<intercept-url pattern="/login.xhtml*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/**" access="ROLE_CADASTRADOR,ROLE_ADMINISTRADOR,ROLE_VENDEDOR,ROLE_BANCO"/>
<form-login login-page="/login.xhtml"/>
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</session-management>
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider ref="daoAuthenticationProvider"/>
</authentication-manager>
<bean:bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"
scope="singleton">
<bean:property name="userDetailsService" ref="detalhadorDeUsuarios"/>
<bean:property name="passwordEncoder" ref="passwordEncoder"/>
</bean:bean>
<bean:bean id="detalhadorDeUsuarios" class="com.hrgi.web.seguranca.DetalhadorDeUsuarios"
scope="singleton">
<bean:property name="recuperador" ref="funcionarioDao"/>
</bean:bean>
<bean:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"
scope="singleton">
<bean:constructor-arg name="strength" value="256"/>
</bean:bean>
<bean:bean id="loginBean" class="com.hrgi.web.seguranca.LoginBean" scope="request"/>
<bean:bean id="loggerListener"
class="org.springframework.security.authentication.event.LoggerListener" />
Вот что я получу в ответ: