Apache Shiro无法启动筛选器-org.Apache.Shiro.web.servlet.AbstractFilter

Apache Shiro无法启动筛选器-org.Apache.Shiro.web.servlet.AbstractFilter,apache,shiro,Apache,Shiro,我试图在Wildfly 9.0.1和JDK 8上的一个简单web应用程序上配置Shiro 我在WEB-INF/lib中有以下JAR commons-beanutils-1.8.3.jar shiro-core-1.2.4.jar shiro-web-1.2.4.jar slf4j-api-1.6.4.jar 我还有两个网页——index.html和login.jsp。我在web-INF/文件夹中添加了我的shiro.ini和web.xml。 shiro.ini的内容是: [main] auth

我试图在Wildfly 9.0.1和JDK 8上的一个简单web应用程序上配置Shiro

我在WEB-INF/lib中有以下JAR

commons-beanutils-1.8.3.jar

shiro-core-1.2.4.jar

shiro-web-1.2.4.jar

slf4j-api-1.6.4.jar

我还有两个网页——index.html和login.jsp。我在web-INF/文件夹中添加了我的shiro.ini和web.xml。 shiro.ini的内容是:

[main]

authc.loginUrl = /login.jsp
authc.usernameParam = user
authc.passwordParam = pass
authc.rememberMeParam = remember

authc.successUrl  = /index.html

[users]

joe = 123, administrator

[roles]

administrator = *

[urls]

/login.jsp = authc, roles[administrator]

/index.html = authc, roles[administrator]
<?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">  
  <display-name>SampleProject</display-name>  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
    <listener>
        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>  
     <filter>
        <filter-name>shiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
          <init-param>
                <param-name>config</param-name>
                <param-value>shiro.ini</param-value>
            </init-param> 
    </filter>    
    <filter-mapping>
        <filter-name>shiroFilter</filter-name>
        <url-pattern>/*</url-pattern> 
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>   
</web-app>
web.xml内容是:

[main]

authc.loginUrl = /login.jsp
authc.usernameParam = user
authc.passwordParam = pass
authc.rememberMeParam = remember

authc.successUrl  = /index.html

[users]

joe = 123, administrator

[roles]

administrator = *

[urls]

/login.jsp = authc, roles[administrator]

/index.html = authc, roles[administrator]
<?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">  
  <display-name>SampleProject</display-name>  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
    <listener>
        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>  
     <filter>
        <filter-name>shiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
          <init-param>
                <param-name>config</param-name>
                <param-value>shiro.ini</param-value>
            </init-param> 
    </filter>    
    <filter-mapping>
        <filter-name>shiroFilter</filter-name>
        <url-pattern>/*</url-pattern> 
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>   
</web-app>

样本项目
index.html
org.apache.shiro.web.env.EnvironmentLoaderListener
雪洛菲特
org.apache.shiro.web.servlet.IniShiroFilter
配置
西罗·伊尼
雪洛菲特
/* 
要求
向前地
包括
错误
但是,一旦我尝试访问该页面,或出现以下错误:

Context Path:/SampleProject
Servlet Path:/index.html
Path Info:null
Query String:null
Stack Trace
2015-08-23 16:03:58,910 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 9.0.1.Final (WildFly Core 1.0.1.Final) started in 3641ms - Started 551 of 754 services (268 services are lazy, passive or on-demand)
2015-08-23 16:04:11,895 ERROR [org.apache.shiro.web.servlet.AbstractFilter] (default task-2) Unable to start Filter: [Line argument must contain a key and a value.  Only one string token was found.].: java.lang.IllegalArgumentException: Line argument must contain a key and a value.  Only one string token was found.
    at org.apache.shiro.config.Ini$Section.splitKeyValue(Ini.java:542)
    at org.apache.shiro.config.Ini$Section.toMapProps(Ini.java:567)
    at org.apache.shiro.config.Ini$Section.<init>(Ini.java:464)
    at org.apache.shiro.config.Ini$Section.<init>(Ini.java:445)
    at org.apache.shiro.config.Ini.addSection(Ini.java:302)
    at org.apache.shiro.config.Ini.load(Ini.java:351)
    at org.apache.shiro.config.Ini.load(Ini.java:254)
    at org.apache.shiro.web.servlet.IniShiroFilter.convertConfigToIni(IniShiroFilter.java:295)
    at org.apache.shiro.web.servlet.IniShiroFilter.loadIniFromConfig(IniShiroFilter.java:236)
    at org.apache.shiro.web.servlet.IniShiroFilter.configure(IniShiroFilter.java:205)
    at org.apache.shiro.web.servlet.IniShiroFilter.init(IniShiroFilter.java:190)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.onFilterConfigSet(AbstractShiroFilter.java:152)
    at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:97)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
    at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:84)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:97)
    at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:79)
    at io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:65)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

2015-08-23 16:04:11,897 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /SampleProject/: javax.servlet.ServletException: java.lang.IllegalArgumentException: Line argument must contain a key and a value.  Only one string token was found.
    at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:105)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
    at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:84)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:97)
    at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:79)
    at io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:65)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Line argument must contain a key and a value.  Only one string token was found.
    at org.apache.shiro.config.Ini$Section.splitKeyValue(Ini.java:542)
    ...
上下文路径:/SampleProject
Servlet路径:/index.html
路径信息:空
查询字符串:null
堆栈跟踪
2015-08-23 16:03:58910信息[org.jboss.as](控制器启动线程)WFLYSRV0025:WildFly Full 9.0.1.Final(WildFly Core 1.0.1.Final)于3641ms启动-启动754个服务中的551个(268个服务为惰性、被动或按需)
2015-08-23 16:04:11895错误[org.apache.shiro.web.servlet.AbstractFilter](默认任务-2)无法启动筛选器:[行参数必须包含键和值。仅找到一个字符串标记。]:java.lang.IllegalArgumentException:行参数必须包含键和值。仅找到一个字符串标记。
位于org.apache.shiro.config.Ini$Section.splitKeyValue(Ini.java:542)
位于org.apache.shiro.config.Ini$Section.toMapProps(Ini.java:567)
在org.apache.shiro.config.Ini$部分。(Ini.java:464)
在org.apache.shiro.config.Ini$部分。(Ini.java:445)
位于org.apache.shiro.config.Ini.addSection(Ini.java:302)
位于org.apache.shiro.config.Ini.load(Ini.java:351)
位于org.apache.shiro.config.Ini.load(Ini.java:254)
位于org.apache.shiro.web.servlet.IniShiroFilter.convertConfigToIni(IniShiroFilter.java:295)
位于org.apache.shiro.web.servlet.IniShiroFilter.loadIniFromConfig(IniShiroFilter.java:236)
位于org.apache.shiro.web.servlet.IniShiroFilter.configure(IniShiroFilter.java:205)
位于org.apache.shiro.web.servlet.IniShiroFilter.init(IniShiroFilter.java:190)
位于org.apache.shiro.web.servlet.AbstractShiroFilter.onFilterConfigSet(AbstractShiroFilter.java:152)
位于org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:97)
在io.undertow.servlet.core.LifeCycleInterceptorInvocation.Procedue(LifeCycleInterceptorInvocation.java:111)
位于org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:84)
在io.undertow.servlet.core.LifeCycleInterceptorInvocation.Procedue(LifeCycleInterceptorInvocation.java:97)
位于io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:79)
位于io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:65)
位于io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
位于io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
位于io.undertow.servlet.handlers.FilterHandler.HandlerRequest(FilterHandler.java:85)
位于io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.HandlerRequest(ServletSecurityRoleHandler.java:62)
位于io.undertow.servlet.handlers.ServletDispatchingHandler.HandlerRequest(ServletDispatchingHandler.java:36)
位于org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.HandlerRequest(SecurityContextAssociationHandler.java:78)
位于io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43)
位于io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
位于io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.HandlerRequest(ServletAuthenticationCallHandler.java:57)
位于io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43)
位于io.undertow.security.handler.AbstractSecretentityHandler.HandlerRequest(AbstractSecretentityHandler.java:46)
位于io.undertow.servlet.handlers.security.ServletSecretentityConstraintHandler.HandlerRequest(ServletSecretentityConstraintHandler.java:64)
在io.undertow.security.handler.AuthenticationMechanismsHandler.HandlerRequest(AuthenticationMechanismsHandler.java:58)
位于io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.HandlerRequest(CachedAuthenticatedSessionHandler.java:72)
位于io.undertow.security.handlers.NotificationReceiverHandler.HandlerRequest(NotificationReceiverHandler.java:50)
位于io.undertow.security.handlers.SecurityInitialHandler.HandlerRequest(SecurityInitialHandler.java:76)
位于io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43)
位于org.wildfly.extension.undertow.security.jacc.jaccontextidhandler.handleRequest(jaccontextidhandler.java:61)
位于io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43)
位于io.undertow.server.handlers.PredicateHandler.HandlerRequest(PredicateHandler.java:43)
位于io.undertow.servlet.handlers.ServletiInitialHandler.handleFirstRequest(ServletinInitialHandler.java:282)
位于io.undertow.servlet.handlers.ServletiInitialHandler.dispatchRequest(ServletiInitialHandler.java:261)
在io.undertow.servlet.handlers.ServletiInitialHandler.access$000(ServletiInitialHandler.java:80)
在io.undertow.servlet.handlers.ServletInitialHandler$1.HandlerRequest(ServletInitialHandler.java:172)
位于io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
在io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
在java.util
<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>