2012-05-25 2 views
0

Я очень много nubie в springsecurity и JSF, а у меня проблема при реализации пружины выхода из системы безопасности в JSF ..
Как установить выход безопасности безопасности в jsf ..?

моего приложение:
springframework 3.0.2
JSF 2,0
primefaces 3.1.1

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Production</param-value> 
</context-param> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/app-config.xml</param-value> 
</context-param> 

<servlet> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/app-config.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 
<listener> 
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> 
</listener> 


<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>faces/index.jsp</welcome-file> 
</welcome-file-list> 

</web-app> 

приложение-config.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

<!-- Scans the classpath of this application for @Components to deploy as beans --> 
<context:component-scan base-package="com.raistudies" /> 

<!-- Importing Spring Security Settings --> 
<import resource="security.xml"/> 

<!-- Configures the @Controller programming model --> 
<mvc:annotation-driven /> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/userPage/"/> 
    <property name="suffix" value=".xhtml"/> 
</bean> 

<context:property-placeholder location="/WEB-INF/jdbc.properties" /> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${app.jdbc.driverClassName}" /> 
    <property name="url" value="${app.jdbc.url}" /> 
    <property name="username" value="${app.jdbc.username}" /> 
    <property name="password" value="${app.jdbc.password}" /> 
</bean> 

</beans> 

security.xml

<?xml version="1.0" encoding="UTF-8"?> 
<b:beans xmlns="http://www.springframework.org/schema/security" 
xmlns:b="http://www.springframework.org/schema/beans" 
xmlns:s="http://www.springframework.org/schema/security" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/security 
http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 

<http auto-config="true" use-expressions="true"> 

    <intercept-url pattern="/assets/previews/**" access="permitAll" /> 
    <intercept-url pattern="/assets/thumbs/**" access="permitAll" /> 
    <intercept-url pattern="/css/**" access="permitAll"/> 
    <intercept-url pattern="/design/**" access="permitAll" /> 
    <intercept-url pattern="/images/**" access="permitAll" /> 
    <intercept-url pattern="/js/**" access="permitAll" /> 
    <intercept-url pattern="/pageAllNews/**" access="permitAll" /> 

    <intercept-url pattern="/pageLogin/**" access="permitAll" /> 
    <intercept-url pattern="/resources/css/**" access="permitAll" /> 
    <intercept-url pattern="/resources/skins/tn3/**" access="permitAll" /> 
    <intercept-url pattern="/templates/**" access="permitAll"/> 
    <intercept-url pattern="/userPage/**" access="permitAll" /> 

    <intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')"/> 
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')"/> 
    <intercept-url pattern="/**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER')"/> 

    <form-login login-processing-url="/j_spring_security_check" 
       login-page="/userPage/login.jsp" 
       default-target-url="/userPage/home.jsf" 
       authentication-failure-url="/userPage/login.jsp" /> 

    <logout logout-success-url="/userPage/login.jsp"/> 
    <remember-me /> 

</http> 

<authentication-manager> 
    <authentication-provider> 
     <password-encoder hash="md5"/> 
     <jdbc-user-service data-source-ref="dataSource" /> 
    </authentication-provider> 
</authentication-manager> 

</b:beans> 

Я попытался реализации кнопку выхода из системы в jsf.page, но он не работает ..

<h:outputLink value="${request.contextPath}/j_spring_security_logout">logout</h:outputLink> 

Может ли кто-нибудь помочь мне Для решения этой проблемы..?
agungdmt

ответ

3

заменить этот

<h:outputLink value="${request.contextPath}/j_spring_security_logout">logout</h:outputLink> 

йота это

<h:outputLink value="${pageContext.request.contextPath}/j_spring_security_logout">logout</h:outputLink> 
+0

ТНХ для вашего ответа, но i'wanna осуществить вход/выход из системы весны безопасности в управляемых компонентах, вы можете дать мне предложить или ссылку для настроить его ..: D – chemic

0

Что касается вопроса о входа в систему. Вы можете взглянуть на мой ответ, предоставленный @How to use Spring security with Primefaces вопрос.

Что касается вывода , вы можете определить навигационный случай, направляющий действие выхода на страницу выхода, например. logout.xhtml, а затем убедитесь, что у вас есть следующие определенные в весенней безопасности

<security:logout logout-url="logout.xhtml" 
     logout-success-url="logout_success.xhtml" invalidate-session="true" /> 

Таким образом, Вы в состоянии сделать вещи в управляемом компоненте до фактического перемещения и выполнить действие выхода из системы в весенней безопасности как таковые.

0

Работа для моего

<h:form id="formExit" > 
<p:commandLink ajax="true" action="/userPage/login.jsp" oncomplete="jQuery.get('{request.contextPath}/j_spring_security_logout')"> 
    <p:outputLabel value="Logout" /> 
</p:commandLink> 
</h:form> 
Смежные вопросы