每当我尝试在两个不同的会话中与两个不同的用户登录时,我就会收到此错误。
13:27:28,444 ERROR [com.commit.steam.rest.RestLoginService](http-localhost-127.0.0.1-8080-2)登录时出错:javax.servlet.ServletException:没有可用于编程登录的身份验证器 在org.apache.catalina.connector.Request.login(Request.java:3254)[jbossweb-7.0.13.Final.jar:] 在org.apache.catalina.connector.RequestFacade.login(RequestFacade.java:1082)[jbossweb-7.0.13.Final.jar:] 在com.commit.steam.rest.RestLoginService.login(RestLoginService.java:128)[steam-rest-api-0.1.6-SNAPSHOT.jar:]
来自standalone.xml的:
<security-domain name="steam" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/STEAMDS"/>
<module-option name="principalsQuery" value="select U.PASSWORD from USERS U where U.EMAIL=?"/>
<module-option name="rolesQuery" value="select R.NAME, 'Roles' from USERS U join USER_ROLES UR on U.ID = UR.USER_ID join ROLES R on UR.ROLE_ID = R.ID where U.EMAIL=?"/>
<module-option name="hashAlgorithm" value="SHA-256"/>
<module-option name="hashEncoding" value="base64"/>
</login-module>
</authentication>
</security-domain>
的JBoss-web.xml中:
<?xml version="1.0"?>
<jboss-web>
<security-domain>steam</security-domain>
</jboss-web>
我使用JBoss-as 7.1.1.Final
调试时我可以看到第一个请求(HttpServletRequest.context.authenticator)有NonLoginAuthenticator,第二个会话的登录没有附加任何身份验证器(即HttpServletRequest.context.authenticator为null) 。 第一个会话中的每个后续请求在请求上都具有相同的Authenticator(当我测试一个用户的业务流时)。
HttpServletRequest在类级别注入
@Context
private HttpServletRequest request;
protected HttpServletRequest request() {
return this.request;
}
(我试图将注射移到方法级别,但它没有帮助)。我的休息类注释为@Stateless bean(允许注入)。
我尝试切换会话(我使用Chrome和FireFox来确保不同的会话),但它没有改变任何内容。
有没有人对我需要寻找此问题的地方有任何想法或领导?
非常感谢 阿维
答案 0 :(得分:1)
在您的web.xml中添加<security-constraint>
元素。像这样:
<security-constraint>
<web-resource-collection>
<web-resource-name>Permit all</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>