我想知道如何在不保护整个 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
}
它不会像注释那样方便,但它会起作用。
编辑评论以澄清
我看到答案有点模棱两可。这个想法是删除 @With()
注释并创建您自己的本地 @Before
方法,该方法将在所有方法上执行 except 列表
。然后该方法可以将处理委托(delegate)给 Secure.before(因为它是一个没有参数的静态方法)
现在我想到了,你可以在 Secure
类中的方法中添加 unless
限制,它应该适用于这种情况,尽管这意味着混合一些概念(所以我不会在我的项目中这样做)。
关于java - 在 Play 框架中同时使用 CRUD 和安全模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9582591/