grails spring安全性在登录后重定向

grails spring安全性在登录后重定向,grails,spring-security,grails-plugin,Grails,Spring Security,Grails Plugin,我的Grails应用程序使用spring安全插件。当您尝试访问受保护的资源时,将显示登录表单,并将该资源的路径保存在会话下。SPRING\u SECURITY\u saved\u REQUEST\u KEY 我观察到以下行为: 直接导航到登录表单session.SPRING\u SECURITY\u SAVED\u REQUEST\u KEY==null如预期的那样 返回主页而不登录 尝试访问受保护的资源/foo/bar。登录表单显示在会话下保存的受保护资源的路径。SPRING\u SECURI

我的Grails应用程序使用spring安全插件。当您尝试访问受保护的资源时,将显示登录表单,并将该资源的路径保存在
会话下。SPRING\u SECURITY\u saved\u REQUEST\u KEY

我观察到以下行为:

  • 直接导航到登录表单
    session.SPRING\u SECURITY\u SAVED\u REQUEST\u KEY==null
    如预期的那样
  • 返回主页而不登录
  • 尝试访问受保护的资源
    /foo/bar
    。登录表单显示在
    会话下保存的受保护资源的路径。SPRING\u SECURITY\u saved\u REQUEST\u KEY
    如预期的那样
  • 返回主页而不登录
  • 直接访问登录表单。到
    /foo/bar
    的路径仍保存在
    会话下。SPRING\u SECURITY\u saved\u REQUEST\u KEY
    不符合预期
  • 如果我现在登录,我将被重定向到
    /foo/bar
    ,即使在步骤(5)中,我没有尝试访问此资源-显示登录表单是因为我直接导航到它

    这就提出了一个问题:当用户直接导航到登录页面时,成功登录后应该显示什么?他们登录前的页面(PBL)似乎是一个合理的默认页面


    总而言之,我想要的行为是:

    • 用户直接导航到登录表单,在
      会话下未保存任何值。SPRING\u SECURITY\u saved\u REQUEST\u KEY
      =>登录后重定向到PBLPASS
    • 用户访问受保护资源=>登录后重定向到受保护资源PASS
    • 用户直接导航到登录表单并在
      会话下保存值。SPRING\u SECURITY\u saved\u REQUEST\u KEY
      =>登录失败后重定向到PBL

    你是在问如何在你的项目中修复它,还是这是Spring Security插件的一个缺陷?有点刺痛它,所以我不想把它列为答案。如果您创建了一个过滤器,在除登录之外的所有请求后都会被调用,并将
    会话.SPRING\u SECURITY\u SAVED\u REQUEST\u KEY
    设置为null,该怎么办?这可能会解决问题3,但可能会解决问题2。这不是插件特性,而是Spring的安全特性。通常,只有在进行身份验证时才会删除SavedSession。应该可以解决这个问题,但我还不确定最好的方法是什么。@BurtBeckwith在我看来,
    session.SPRING\u SECURITY\u SAVED\u REQUEST\u KEY
    应该在用户直接访问登录表单时删除,尽管我可能遗漏了一些东西。对,问题是如何检测直接访问与重定向。