创建grails筛选器以限制访问操作

创建grails筛选器以限制访问操作,grails,Grails,背景: 我正在创建一个有订阅计划的电子商务控制器 步骤1:用户选择一个计划 第二步:然后输入他们的信用卡信息 这些操作驻留在一个控制器中,该控制器还将具有以下操作: 编辑信用卡信息 更改他们的订阅计划 取消计划等 问题陈述: 我想重定向控制器中的所有操作,但如果用户尚未选择计划,则选择计划除外 示例: 在UI中,用户将看到有关其账单信息和订阅设置的链接,但如果他们单击这些链接,但尚未选择计划,则会被重定向到操作/页面以选择计划 问题 过滤器是处理这种情况的最佳场所吗?如果是,它将如何编

背景:
我正在创建一个有订阅计划的电子商务控制器

  • 步骤1:用户选择一个计划
  • 第二步:然后输入他们的信用卡信息
这些操作驻留在一个控制器中,该控制器还将具有以下操作:

  • 编辑信用卡信息
  • 更改他们的订阅计划
  • 取消计划等
问题陈述:
我想重定向控制器中的所有操作,但如果用户尚未选择计划,则选择计划除外

示例:
在UI中,用户将看到有关其账单信息和订阅设置的链接,但如果他们单击这些链接,但尚未选择计划,则会被重定向到操作/页面以选择计划

问题

  • 过滤器是处理这种情况的最佳场所吗?如果是,它将如何编码
  • 除了使用过滤器,还有更好的方法吗

我不想在每个操作的开头放一个if语句,检查用户是否有计划,以及他们是否没有将其重定向到pick-a-plan页面。似乎有更好的方法。

我认为在这种情况下,过滤器可以很容易地完成这项工作

类似于以下过滤器的过滤器应能实现此目的:

class MyFilter{
    exceptPlan(controller:'myController',action:'pickPlan', invert:true){
        before = {
              if (!session.plan){
                   redirect action:'pickPlan'
                   return false
              }
        }
    }
}
另一种使用WebFlow的方法如果用户没有“计划”,他/她也将不被允许“编辑信用卡信息”?