2012-12-04 32 views
3

我想在我的JSF項目中使用Spring Security標記庫,所以我做了以下更改項目,但我得到這個異常:春季安全的Taglib

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: java.lang.ClassNotFoundException: org.springframework.faces.security.FaceletsAuthorizeTagHandler. Please see server.log for more details.

我在做什麼錯在這裏? 我使用:

netbeans 7.1.2 --spring mvc 3.0.6-- spring security 3.1.1--glassfish 3.1.2 and jsf 2.1

springsecurity.taglib.xml:

<!DOCTYPE facelet-taglib PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" 
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd"> 
<facelet-taglib> 
    <namespace>http://www.springframework.org/security/tags</namespace> 
    <tag> 
     <tag-name>authorize</tag-name> 
     <handler-class>org.springframework.faces.security.FaceletsAuthorizeTagHandler</handler-class> 
    </tag> 
    <function> 
     <function-name>areAllGranted</function-name> 
     <function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class> 
     <function-signature>boolean areAllGranted(java.lang.String)</function-signature> 
    </function> 
    <function> 
     <function-name>areAnyGranted</function-name> 
     <function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class> 
     <function-signature>boolean areAnyGranted(java.lang.String)</function-signature> 
    </function> 
    <function> 
     <function-name>areNotGranted</function-name> 
     <function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class> 
     <function-signature>boolean areNotGranted(java.lang.String)</function-signature> 
    </function> 
    <function> 
     <function-name>isAllowed</function-name> 
     <function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class> 
     <function-signature>boolean isAllowed(java.lang.String, java.lang.String)</function-signature> 
    </function> 
</facelet-taglib> 

的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"> 


<!-- /========================jsf config=============================/--> 

    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <context-param> 
     <param-name>primefaces.THEME</param-name> 
     <param-value>#{sessionManager.theme}</param-value> 
    </context-param> 
    <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>*.xhtml</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>/index.xhtml</welcome-file> 
    </welcome-file-list> 

    <!-- /========================spring config=============================/--> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/applicationContext.xml 
      /WEB-INF/spring-security.xml 
     </param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.FACELETS_LIBRARIES</param-name> 
     <param-value>/WEB-INF/springsecurity.taglib.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</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> 
     <dispatcher>REQUEST</dispatcher> 
     <dispatcher>FORWARD</dispatcher> 
    </filter-mapping> 

</web-app> 

mypage.xhtml:

xmlns:sec="http://www.springframework.org/security/tags" 
. 
. 
. 
<sec:authorize access="ROLE_SUPERADMIN"> 
     <h:outputText value="test" />       
</sec:authorize> 

MYLIB:

org.springframework.cglib-2.2 3.0.6.RELEASE 
    org.springframework.aop 3.0.6.RELEASE 
    org.springframework.asm 3.0.6.RELEASE 
    org.springframework.aspects 3.0.6.RELEASE 
    org.springframework.beans 3.0.6.RELEASE 
    org.springframework.context 3.0.6.RELEASE 
    org.springframework.context.support 3.0.6.RELEASE 
    org.springframework.core 3.0.6.RELEASE 
    org.springframework.expression 3.0.6.RELEASE 
    org.springframework.instrument 3.0.6.RELEASE 
    org.springframework.expression 3.0.6.RELEASE 
    org.springframework.jdbc 3.0.6.RELEASE 
    org.springframework.jms 3.0.6.RELEASE 
    org.springframework.orm 3.0.6.RELEASE 
    org.springframework.oxm 3.0.6.RELEASE 
    org.springframework.test 3.0.6.RELEASE 
    org.springframework.tx 3.0.6.RELEASE 
    org.springframework.web 3.0.6.RELEASE 
    org.springframework.webmvc-portlet 3.0.6.RELEASE 
    org.springframework.webmvc 3.0.6.RELEASE 
    org.springframework.struts 3.0.6.RELEASE 
    commons-logging-1.1.1 
    jsf 2.1-jsf-api 
    jsf 2.1 -jsf-impl 
    jstl 1.1-standard 
    jstl 1.1-jstl 
    spring-security-ldap-3.1.1.RELEASE.jar 
    spring-security-config-3.1.1.RELEASE.jar 
    spring-security-core-3.1.1.RELEASE.jar 
    spring-security-taglibs-3.1.1.RELEASE.jar 
    spring-security-web-3.1.1.RELEASE.jar 

回答

8

您將需要包括spring-faces以春季安全標籤與面孔整合。如果你正在使用maven,那麼會建議添加dependency,因爲這可能會有jar依賴。

+0

謝謝你的回覆,但我已經做到了,我得到這個異常:org.springframework.faces.webflow.FlowActionListener'缺少運行時依賴:java.lang.NoClassDefFoundError:org/springframework/webflow/execution /的RequestContext。 – faranak

+0

現在你缺少如上所述的webflow罐子彈簧面將取決於其他罐子。 –

+0

我該如何解決這個問題? – faranak