gpt4 book ai didi

jsf - j_security_check 与程序化安全

转载 作者:行者123 更新时间:2023-12-01 06:45:38 27 4
gpt4 key购买 nike

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

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

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

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

最佳答案

这必须是围绕 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 后,在 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 中设置,并且在 j_security_check 完成后变量“rememberme”的值将可用。可以根据登录成功或失败设置cookie。

关于jsf - j_security_check 与程序化安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5764688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com