2012-12-04 93 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