强制所有方法遵循一个模式

x6h2sr28  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(364)

我们正在开发一个web应用程序,它应该允许一个人只有在获得授权的情况下才能执行某些操作。因此,控制器中的每个方法都需要检查他/她是否有权执行特定的操作(请注意,权限是特定于某个操作的)。后端是java,前端是javascript。
就像下面这样,

public class StudentDataInputController {

          public ModelAndView getDataInputView(HttpServletRequest request,HttpServletResponse response) {
              if (isAuthorized(request)) {
                  // Do something
              }
         }

         public String saveInput(HttpServletRequest request,HttpServletResponse response) {
             if (isAuthorized(request)) {
                 // Do something
             }
         }
  }

我想知道是否有任何设计模式来为类中定义的每个操作强制执行此操作。一种解决方案是定义一个接口或抽象类,并为实现接口或扩展抽象的每个操作提供一个专用类。但是,它会导致大量的类,而且,我认为这是不可行的,因为每个操作的返回类型都是不同的。任何建议都会有帮助
更新:请注意权限是特定于某个操作的

n3schb8v

n3schb8v1#

代理设计模式可能是您所寻找的。准确地说是寻找 Protection Proxies .
有很多方法可以使用这种模式。
一种方法是为每个服务类创建一个代理服务类。在控制器内部,你点击代理对象而不是真正的服务类。
在你的代理里面,你可以决定你是否想要进入服务类。

相关问题