当前位置: 首页 > 知识库问答 >
问题:

如何在使用CSRF登录后启用Spring Security POST重定向?

韩瀚
2023-03-14
  <csrf />
  <form-login default-target-url="/defaultPage"/>

我如何获得这样一个帖子重定向后登录工作?

更新:我尝试创建一个自定义的SavedRequestawareAuthenticationSuccessHandler来重定向到原始POST请求。但是,我看到原始请求甚至没有保存在requestcache中。

共有1个答案

万楷
2023-03-14

似乎在启用CSRF保护时,Spring Security仅在请求使用Get方法的情况下才将原始请求放入RequestCache中。为了让它也缓存post请求,我创建了一个自定义的requestcache

我不是百分之百相信这样做不会削弱CSRF的保护,但在我看来这是安全的。

将请求缓存bean添加到XML配置:

<bean id="requestCache" class="a.b.c.AlwaysSaveRequestCache" />

<http>
   <csrf />
   <request-cache ref="requestCache" />
</http>
public class AlwaysSaveRequestCache extends HttpSessionRequestCache
{
   @Override
   public void saveRequest(HttpServletRequest request, HttpServletResponse response)
   {
      final String SAVED_REQUEST = "SPRING_SECURITY_SAVED_REQUEST";
      DefaultSavedRequest savedRequest = new DefaultSavedRequest(request, new PortResolverImpl());
      request.getSession().setAttribute(SAVED_REQUEST, savedRequest);
      logger.debug("DefaultSavedRequest added to Session: " + savedRequest);
   }
}
 类似资料:
  • 我想在登录到我的索引页面(index.jsp)后进行重定向,实际上我的登录可以正常工作,但ajax支持缺少重定向。 她是我的登录名。jsp 这是我的登录 我的struts配置文件: 对于DAO部分是: 公共字符串验证(字符串用户名,字符串userpass)抛出SQLException,Exception{ 谢谢你的帮助。

  • 我试图让一个已经是我的另一个网站用户的用户在后端登录。现在我可以使用API从以前网站的数据库中获取用户的数据,并在登录过程中进行用户注册。同时,我希望这个用户在刚刚插入数据时登录,因为现在用户已经存在。我试图重用相同的方法

  • 我想在成功登录后为特定页面重定向用户。 我不希望用户在登录后导航到上次查看的页面。 我试过以下网址,但它显示我的错误。 错误:

  • 问题内容: 我想在我的 react / react-router / flux 应用程序中建立一个Facebook登录名。我在登录事件上注册了一个侦听器,并且希望将用户重定向到(如果他们已登录)。该怎么办?效果不佳,除非完全重新加载了页面。 问题答案: React Router v0.13 该实例从返回可以通过左右(或者,如果内部的阵营组件,你可以从它的上下文对象),以及包含的方法一样,你可以用它

  • 我将使用CSRF codeigniter和ajax进行安全登录。但是我有一个问题,我的语法。 这是我的表格: 这是我的javascript: 和我的控制器: 我的模型是:

  • 我试图调试我的案例,简单的ActiveWeb应用程序没有在Jetty下运行。它的行为就像不存在任何用于请求处理的类一样,并返回错误404。 问题不在于ActiveWeb。是关于码头的。如何发现Jetty有一些web应用程序,它有一个带注释的类,并将在HTTP请求下执行它? 目前我已经下载了Jetty,它可以工作。不幸的是,它没有日志记录。当404错误返回时,没有任何东西显示在或中,也没有任何文件显