【问题标题】:Exception when integrate Spring Security inside ui:composition在 ui:composition 中集成 Spring Security 时出现异常
【发布时间】:2017-05-29 02:27:51
【问题描述】:

我正在尝试将 Spring Security 集成到 ui:composition 中。 我从这个有用的链接获得帮助:https://raichand-java.blogspot.in/2016/12/springsecurity4primefaces5springdatajpa.html

它也有效。

但是,在 ui:composition 中集成代码后,我遇到了异常。 知道我添加了文件springsecurity.taglib.xml

<?xml version="1.0"?>
<!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

  <context-param>
      <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
      <param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
  </context-param>

运行此页面后:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:p="http://primefaces.org/ui">
	<h:head>
        <title>Login</title>
        <h:outputScript library="primefaces" name="jquery/jquery.js"
		target="head" />
	<h:outputScript library="primefaces" name="jquery/jquery-plugins.js"
		target="head" />
	</h:head>
	<h:body>
	
		<ui:composition template="/templates/homeTemplate.xhtml"
						xmlns="http://www.w3.org/1999/xhtml"
					    xmlns:ui="http://java.sun.com/jsf/facelets"
					    xmlns:h="http://java.sun.com/jsf/html"
					    xmlns:sec="http://www.springframework.org/security/tags"
					    xmlns:p="http://primefaces.org/ui">
		
		
		<ui:define name="content">	
    	<center><h2>Login</h2></center>
		<c:if test="${'fail' eq param.auth}">
    		<div style="color:red">
        		Login Failed!!!<br/>
            	Reason : Bad Credentials!Please Try Again.
    		</div>
		</c:if>
     	<center>
     		<h:form prependId="false" id="form">
        		<p:panelGrid columns="2" style="border-bottom-width: 0px;">
                <h:outputText value="UserName:"/>
                <p:inputText value="#{loginController.username}" id="username" required="true" requiredMessage="UserName is required"/>
                <h:outputText value="Password:"/>
                <p:password value="#{loginController.password}" id="password" required="true" requiredMessage="Password is required"/>
            </p:panelGrid>
        	    <p:spacer height="20px" width="10px">  </p:spacer>
        	    <p:row>
        	    	<p:selectBooleanCheckbox label="Remember Me" id="remember-me" >Remember Me </p:selectBooleanCheckbox>
        	         <h:outputText value=" " />
        	    </p:row>
        	    <br/> 
        	    <p:row>
        	    	<p:commandButton action="#{loginController.login()}" value="Login" ajax="false"/>
        	   	</p:row>
        	</h:form>
		</center>
		</ui:define>
	</ui:composition>
	
	</h:body>
</html>

我遇到了这个异常:

严重 [javax.enterprise.resource.webcontainer.jsf.config](ServerService 线程池 -- 175)部署期间的严重错误::com.sun.faces.config.ConfigurationException:配置失败! org.springframework.faces.security.FaceletsAuthorizeTagHandler 来自 [来自服务模块加载器的模块“deployment.mission-man-ear.ear.mission-man-web.war:main”] 在 com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:453) 在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:227) 在 io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187) 在 io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:198) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:748) 在 org.jboss.threads.JBossThread.run(JBossThread.java:320)

谷歌搜索后,我找到了这个线程java.lang.ClassNotFoundException: org.springframework.faces.security.FaceletsAuthorizeTagHandler,但没有帮助我!我认为spring-security-taglibs 依赖版本的版本有问题。你有什么想法解决这个问题吗?任何帮助表示赞赏。非常感谢。

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    我不需要进行新的更改。 尝试运行方式> Maven 清理,运行方式> Maven 安装,然后 Maven> 更新项目。 就是这样。

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2022-12-17
      • 1970-01-01
      相关资源
      最近更新 更多