java - 在 Play 框架中同时使用 CRUD 和安全模块

标签 java model-view-controller playframework

我想知道如何在不保护整个 Controller 的情况下将 CRUD 与安全模块一起使用。

我有一个 BlogPost 模型和一个名为 BlogPosts 的 Controller 。由于我希望管理员能够使用 CRUD 后台创建、更新和删除帖子,因此 Controller 扩展了 CRUD 并使用 Secure :

@With(Secure.class)
public class BlogPosts extends CRUD {

}

但是现在我想在主页上列出博客文章。我不能使用这个 Controller ,因为它仅限于经过身份验证的用户。而且我不想创建另一个 Controller 。

那么最好的方法是什么?

最佳答案

您可以编写自己的@Before 方法来调用除list 之外的所有方法的安全检查。像这样的东西:

   @Before(unless="list")
   public static void before() {
      // Do security check
   }

它不会像注释那样方便,但它会起作用。

参见 documentation

编辑评论以澄清

我看到答案有点模棱两可。这个想法是删除 @With() 注释并创建您自己的本地 @Before 方法,该方法将在所有方法上执行 except 列表。然后该方法可以将处理委托(delegate)给 Secure.before(因为它是一个没有参数的静态方法)

现在我想到了,你可以在 Secure 类中的方法中添加 unless 限制,它应该适用于这种情况,尽管这意味着混合一些概念(所以我不会在我的项目中这样做)。

关于java - 在 Play 框架中同时使用 CRUD 和安全模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582591/

相关文章:

javascript - SproutCore javascript

playframework - 在 Play Framework 中使用 sendmail 作为 SMTP 服务器

java - 关于 Java String 美元到美分的转换

java - 从 Sonar 获取 JaCoCo 集成覆盖

java - 按钮放置和位置不起作用

java - 从服务返回同步消息,然后进行异步处理 - 担心挂起线程吗?

python - 如何设置3层Web应用程序项目

model-view-controller - 日志记录适合 Model View Controller 架构的什么位置?

java - 如何在安全模块 Play 1.2.5 中硬编码用户名和密码

Play Framework 2.1 RC1 中的 AJAX 文件上传传送一个空文件