j_security_check 过滤器在 jboss eap 6.4 中不起作用

Posted

技术标签:

【中文标题】j_security_check 过滤器在 jboss eap 6.4 中不起作用【英文标题】:j_security_check filter is not working in jboss eap 6.4 【发布时间】:2019-11-21 03:17:22 【问题描述】:

我在互联网上搜索了一个解决方案,但找不到任何东西。

我的问题是关于在我的 login.jsp 上使用 j_security_check 来过滤并将其转发到 postloginfilter.java。

为此,我在 web.xml 中编写了这些行

<login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
    <form-login-page>/login.jsp</form-login-page>
    <form-error-page>/login.jsp</form-error-page>
  </form-login-config>
</login-config>

<filter-mapping>
  <filter-name>PostLoginFilter</filter-name>
  <url-pattern>/j_security_check</url-pattern>
</filter-mapping>

但即使当我这样称呼前锋时:

final String requestStr = "/j_security_check?j_username=" + reqUserId 
+ "&j_password="+ reqPassword;

req.getRequestDispatcher(requestStr).forward(req, resp);

它根本没有进入 postloginfilter.java。并向我展示了一个空白页。

我想要的是 postloginfilter 完成这项工作并遵循 web.xml 上列出的链。

我也看不出这个过滤器是否也有效。

  <filter-mapping>
   <filter-name>PostLoginFilter</filter-name>
   <url-pattern>/CreateConnectionAndGetEntityNames.do</url-pattern>
 </filter-mapping>

CreateConnectionAndGetEntityNames 实际上是显示表单的那个。但是当我去那里时,断点在 postloginfilter 中没有生效。

可能是什么原因,我该如何解决这个问题?

提前致谢。

【问题讨论】:

【参考方案1】:

据我所知,FormAuthenticator 是作为 JBossWeb 阀门实现的。因此,预计 JBoss j_security_check 请求不会调用任何应用程序 servlet 过滤器。您可以改为将此类过滤器实现为阀门。

【讨论】:

您好,您可以在 jboss 上分享有关 Valve/s 的文档或页面吗?谢谢 你可以参考以下关于 Valve api 的 JBossWeb 文档:docs.jboss.org/jbossweb/latest/api/org/apache/catalina/valves/… 不,正如我所见,这与我的问题无关。我仍然需要像其他人在他们的 jboss 环境中那样使用 j_security_check。我看到了这样做的例子。

以上是关于j_security_check 过滤器在 jboss eap 6.4 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以找到“j_security_check”?

如果 JSF 页面受 j_security_check 保护,则不会在 ajax 请求上引发 ViewExpiredException

J_security_check 在 Firefox 4 中失败

如何使用 j_security_check 在 React.JS 应用程序上对用户进行身份验证

使用 j_security_check 在 Java EE / JSF 中执行用户身份验证

在 Tomcat 上拦截 j_security_check 以在 Struts 2 中将用户名修改为 LDAP