j_security_check与程序安全性

时间:2011-04-23 14:18:47

标签: jsf filter brute-force remember-me j-security-check

我正在使用jsf,ejbs和jpa构建Web应用程序。 我目前使用基于表单的j_security_check来处理身份验证。

我需要实现对cookie的支持,即“记住我”选项。 我也想防止蛮力攻击。即在5次登录失败后锁定某个用户。

我知道另一个选择是使用ServletFilters等以编程方式进行。

有没有办法实现所有这些使用j_security_check?或者我应该切换回以编程方式执行此操作?

1 个答案:

答案 0 :(得分:0)

这必须是围绕j_security_check的自定义实现。您可以使用j_security_check

附加servlet过滤器
<filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>/j_security_check</url-pattern>
</filter-mapping>

在SecurityFilter中,安全检查返回userPrincipal后,在会话中设置更多详细信息并继续。但是如果userPrincipal为null,则从数据库中获取失败计数并将失败消息(包括失败计数)放入会话中,这可以在登录页面中显示。

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    Principal userPrincipal = null;
            String username = httpServletRequest.getParameter("j_username");
    String rememberme = httpServletRequest.getParameter("rememberme");
    chain.doFilter(request, response);
    userPrincipal = httpServletRequest.getUserPrincipal();

请记住,我必须设置为cookie,并且在j_security_check完成后,变量“rememberme”的值将可用。根据登录成功或失败,可以设置cookie。