我已经实现了 Web 应用程序登录,使用j-security-check
它接受参数j_username
并j_password
使用后台注册表进行身份验证。现在,我需要添加出生日期作为另一个参数,并且还需要使用此参数对用户进行身份验证。
有没有办法扩展 j-security-check 以接受其他参数?如果可能,我想避免在 servlet 过滤器中执行检查。
使用 WebSphere V8、MyFaces JSF 2.0、Servlet 3.0、基于自定义数据库的身份验证
我已经实现了 Web 应用程序登录,使用j-security-check
它接受参数j_username
并j_password
使用后台注册表进行身份验证。现在,我需要添加出生日期作为另一个参数,并且还需要使用此参数对用户进行身份验证。
有没有办法扩展 j-security-check 以接受其他参数?如果可能,我想避免在 servlet 过滤器中执行检查。
使用 WebSphere V8、MyFaces JSF 2.0、Servlet 3.0、基于自定义数据库的身份验证
最简单的方法是将出生日期附加到实际日期j_username
(即使用 JavaScript,然后在登录模块中手动拆分它。
替换j_security_check
为通过HttpServletRequest#login()
.
例如
<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.
}
}
此答案的第二部分对此进行了详细概述:使用 j_security_check 在 Java EE / JSF 中执行用户身份验证