j_security_check与编程式安全性比较

4
我正在使用JSF、EJB和JPA构建Web应用程序。 我目前使用基于表单的j_security_check来处理身份验证。
我需要实现对cookie的支持,即“记住我”选项。 同时,我想防止暴力攻击,即在5次失败的登录后锁定某个用户。
我了解到另一种选择是使用ServletFilters等编程方式来完成。 是否有任何方法可以使用j_security_check来实现所有这些功能?还是我应该回到编程方式?
1个回答

0

这必须是围绕 j_security_check 的自定义实现。你可以使用 servlet 过滤器附加到 j_security_check。

<filter-mapping>
    <filter-name>SecurityFilter</filter-name>
    <url-pattern>/j_security_check</url-pattern>
</filter-mapping>

在SecurityFilter中,经过安全检查后返回userPrincipal,将进一步的细节设置在session中并继续。但如果userPrincipal为null,则从数据库中获取失败次数,并将失败消息(包括失败次数)放入session中,可以在登录页面中显示。
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中设置,变量“rememberme”的值将在j_security_check完成后可用。根据登录成功或失败,可以设置cookie。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接