【问题标题】:Deadbolt Restrictions Annotation missing - Play 2.1.1, Deadbolt 2.1Deadbolt Restrictions 注解缺失 - Play 2.1.1, Deadbolt 2.1
【发布时间】:2013-11-20 04:56:35
【问题描述】:

我刚刚注意到在 Deadbolt 2.2 和 deadbolt-2.1 版本中缺少 @Restrictions 注释。 在示例和文档中对其进行了解释 (http://deadbolt-2-java.herokuapp.com/#controller-Restrictions)。

它存在(DB-2.1.x):https://github.com/schaloner/deadbolt-2/tree/D2-1.x/project-code/app/be/objectify/deadbolt/actions

这里没有:

死锁 2.1:https://github.com/schaloner/deadbolt-2-java/tree/deadbolt-2.1/app/be/objectify/deadbolt/java/actions

大师(2.2):https://github.com/schaloner/deadbolt-2-java/tree/master/app/be/objectify/deadbolt/java/actions

有没有它丢失的原因?我如何在没有注释的情况下使用 OR 完成角色分组,只需编写我自己的动态处理程序还是有更好的方法?

感谢您提前回答!

【问题讨论】:

    标签: playframework-2.0 playframework-2.1 scala-template deadbolt


    【解决方案1】:

    我也注意到了这一点,并查看了一些来源。看起来@Restrictions@Restrict 注释都只替换为@Restrict。来自当前@Restrict代码上的cmets:

    在 {@Group} 内,角色是 AND,而在 {@Group} 之间,角色组是 ORed。例如,@Restrict({@Group("foo"), @Group("hurdy", "gurdy)}) 表示@Subject 必须具有 foo 角色或同时具有 hurdy 和 gurdy 角色。

    所以看起来您现在可以只使用一个 @Restrict 注释和一个新的 @Group 注释。

    Link to source code

    【讨论】:

      【解决方案2】:

      好吧,我不知道它为什么会丢失,但我认为使用自定义 DynamicHandler 无论如何都会更干净。动态 Annotation 更短,因为不需要在每个 Annotation 中键入角色名称。

      使用@Restrictions 注解,它看起来像这样:

      @Restrictions({@And("foo"),@And("bar"), @And("more_roles"})
      

      使用动态处理程序看起来像这样:

      @Dynamic("custom_restriction")
      

      动态处理程序中的代码:

      static {
              HANDLERS.put("custom_restriction", new AbstractDynamicResourceHandler() {
                  public boolean isAllowed(String name, String meta, DeadboltHandler deadboltHandler, Http.Context context) {
                      Subject subject = deadboltHandler.getSubject(context);
                      boolean allowed = false;
                      if (DeadboltAnalyzer.hasRole(subject, "foo") || DeadboltAnalyzer.hasRole(subject, "bar") || DeadboltAnalyzer.hasRole(subject, "more_roles")) {
                          allowed = true;
                      }
      
                      return allowed;
                  }
              });
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-25
        • 2017-09-18
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 2014-02-11
        • 1970-01-01
        • 2013-11-25
        相关资源
        最近更新 更多