我有一些奇怪的行为,我不确定为什么。我有两个在Tomcat 7中运行良好的应用程序,但在Wildfly 8.2和9Beta2中表现不正确。
在Tomcat中,我可以登录一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,在第二个应用程序中注销,返回第一个应用程序,我退出那里。这是正确的。
在Tomcat中,我可以登录一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,返回到第一个应用程序,在第一个应用程序中注销,返回到第二个应用程序,我在那里退出了。这是正确的。
在Wildfly中,我登录到第一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,退出第二个应用程序,返回到第一个应用程序,但我仍然记录in。不正确。
在Wildfly中,我登录到第一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,返回第一个应用程序,退出第一个应用程序,转到第二个应用程序,我也在那里登出。正确的。
为什么Wildfly第一次测试失败(上面的3.)?
任何指针都会非常感激。
以下是我文件中的一些摘录:
来自standalone.xml
<security-realm name="DataSourceRealm">
<authentication>
<jaas name="app"/>
</authentication>
</security-realm>
<security-domain name="app" cache-type="default">
<authentication>
<login-module code="Database" flag="requisite">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="dsJndiName" value="jdbc/icedb"/>
<module-option name="principalsQuery" value="select PASSWORD from WSV_USR_PRFL_DEF where USR_PRFL_DEF_ID=?"/>
<module-option name="rolesQuery" value="select USR_GRP_DEF_ID, 'Roles' from WSV_USR_GRP_MAP where USR_PRFL_DEF_ID = ?"/>
<module-option name="unauthenticatedIdentity" value="guest"/>
</login-module>
<login-module code="RoleMapping" flag="requisite">
<module-option name="rolesProperties" value="file:${jboss.server.config.dir}/app.properties"/>
<module-option name="replaceRole" value="false"/>
</login-module>
</authentication>
</security-domain>
<subsystem xmlns="urn:jboss:domain:undertow:2.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
<single-sign-on path="/"/>
.....
来自各种应用程序(WAR)jboss-web.xml:
<jboss-web>
<context-root>/APPNAME</context-root>
<security-domain flushOnSessionInvalidation="true">app</security-domain>
</jboss-web>
来自我的logout.java:
@WebServlet(name="logout", urlPatterns={"/lo.xhtml"}, loadOnStartup=2)
public class Logout extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if (request.getSession(false) != null) {
HttpSession ses = request.getSession(false);
ses.invalidate(); // remove session.
}
request.logout();
response.sendRedirect(request.getContextPath());
}
}