在我的网络应用中,我使用基于表单的登录。我有一个场景,除了login-config.xml中设置的表的数据外,我还要验证不同数据库中的用户。
所以,我在想这个流程:
用户尝试访问受保护资源 - >如果没有活动会话,将被重定向到登录表单 - >用户输入他的凭证 - > j_security_check根据login-config.xml进行身份验证 - >如果身份验证成功,那么好,否则重定向到jsp错误页面,我检查用户是否存在于另一个数据库中(Active目录是特定的。我已经拥有验证凭据的代码)并创建成功会议 - >否则重定向到错误页面
上面以粗体突出显示的部分是否可能?
我在一些文章中读到,一旦对j_security_check进行了身份验证,就无法对其进行过度规则。这是真的???
是否还有其他可能解决此问题的方法(除了将其他数据库的用户添加到login-config.xml中指定的表或修改login-config.xml之外)?
(我正在使用Jboss)
感谢。
答案 0 :(得分:0)
创建Servlet过滤器,该过滤器将捕获j_security_check之后重定向的用户的URL。在此筛选器中,检查其他数据库中的用户凭据。
如果检查成功,则添加会反映该事实的会话布尔值。如果检查失败,请删除会话(HttpSession.invalidate()方法)并将用户重定向到错误页面。
过滤器可能会捕获所有需要授权的URL。在你过滤检查是否有布尔标志,所以你不要一次又一次地检查数据库。