0

在我的网络应用程序中,我使用基于表单的登录。我有一个场景,除了 login-config.xml 中设置的表的数据之外,我还必须验证存在于不同数据库中的用户。

所以,我在想这个流程:

用户尝试访问安全资源 -> 如果没有活动会话,将被重定向到登录表单 -> 用户输入他的凭据 -> j_security_check 根据 login-config.xml 进行身份验证 -> 如果身份验证成功,很好,否则重定向到一个jsp错误页面,我在其中检查用户是否存在于另一个数据库中(具体的活动目录。我已经有验证凭据的代码)并在成功时创建一个会话->否则重定向到错误页面

上面以粗体突出显示的部分是否可能?

我在一些文章中读到,一旦对 j_security_check 进行了身份验证,就无法超越它。是真的吗???

这个问题还有其他可能的解决方案吗(除了将其他数据库中的用户添加到login-config.xml中指定的表或修改login-config.xml)?

(我正在使用 Jboss)

谢谢。

4

1 回答 1

0

创建 Servlet 过滤器,该过滤器将捕获在 j_security_check 之后将用户重定向到的 URL。在此过滤器中检查其他数据库中的用户凭据。

如果检查成功,则添加反映该事实的会话布尔值。如果检查失败,则删除会话(HttpSession.invalidate() 方法)并将用户重定向到错误页面。

过滤器可能会捕获所有需要授权的 URL。在您过滤器中检查是否有布尔标志,因此您不会一次又一次地进行数据库检查。

于 2012-04-23T21:53:36.150 回答