使用j-security-check验证其他参数

时间:2013-03-08 03:21:08

标签: jsf jsf-2 j-security-check

我已使用j-security-check实现了Web应用程序登录,该j_username接受参数j_password和{{1}},以便使用后台注册表进行身份验证。现在,我需要将出生日期作为一个参数添加,并且需要使用此参数对用户进行身份验证。

有没有办法扩展j-security-check以接受其他参数? 如果可能的话,我想避免在servlet过滤器中执行检查。

使用WebSphere V8,MyFaces JSF 2.0,Servlet 3.0,基于自定义数据库的身份验证

2 个答案:

答案 0 :(得分:1)

最简单的方法是将出生日期附加到实际j_username(即使用JavaScript,然后在登录模块中手动拆分。

答案 1 :(得分:0)

通过j_security_check的程序化登录替换HttpServletRequest#login()

E.g。

<h:form>
    <h:inputText value="#{bean.username}" />
    <h:inputSecret value="#{bean.password}" />
    <h:inputText value="#{bean.birthdate}" />
    <h:commandButton value="Login" action="#{bean.login}" />
</h:form>

public void login() {
    // Do your thing with birthdate here.

    // ...

    // Then perform programmatic login.
    try {
        request.login(username, password);
        // Login success. Redirect to landing page.
    } catch (ServletException e) {
        // Login fail. Return to login page.
    }
}

本答案的第2部分详细介绍了这一点:Performing user authentication in Java EE / JSF using j_security_check