Playframework 仅获取已登录的用户';播放框架中的s记录

Playframework 仅获取已登录的用户';播放框架中的s记录,playframework,Playframework,我一定是错过了这个 在我的应用程序中,用户“x”拥有帖子1、4、8。他应该只能查看/编辑这些内容。 如果我在浏览器中打开localhost:9000/post/1,我希望它能够编辑详细信息 当我打开localhost:9000/post/99时,他应该无法查看或编辑此帖子。我如何在Play框架中限制这一点 我知道这个概念,但这是正确的方法吗?标准安全模块不允许这种粒度级别 我有一个类似的需求,我使用了基于drools的模块 希望这有帮助 最简单的方法是将连接用户的id存储在会话中,当您在数据库中

我一定是错过了这个

在我的应用程序中,用户“x”拥有帖子1、4、8。他应该只能查看/编辑这些内容。 如果我在浏览器中打开
localhost:9000/post/1
,我希望它能够编辑详细信息

当我打开
localhost:9000/post/99
时,他应该无法查看或编辑此帖子。我如何在Play框架中限制这一点


我知道这个概念,但这是正确的方法吗?

标准安全模块不允许这种粒度级别

我有一个类似的需求,我使用了基于drools的模块


希望这有帮助

最简单的方法是将连接用户的id存储在会话中,当您在数据库中找到您的帖子时,您可以通过帖子id和用户id而不仅仅是帖子id进行搜索。这样您就不会为您的用户找到帖子99。

无论哪种方法,您都需要点击数据库以查看是否允许用户查看帖子


您可以将此代码放在该控制器的@Before拦截器中,或放在提取Post记录的相关show方法中,如果未经授权,请调用禁止()方法。

谢谢!希望将您的答案与Seb的(以下)结合起来。。。我喜欢在控制器中执行一次,但这意味着每次在控制器中运行任何方法时,我都必须运行两个查询?也许这就是为了保持代码干净所必须做的。你可以缓存postid和userid的映射,而不是每次都点击数据库。对此进行验证。这样可以提高性能。谢谢,但是模块似乎已经过时,并且与最新的播放不太兼容?是的,模块页面不是最新的,但是模块页面是1.2.4的最新版本。由playframework背后的主要公司lunatech制作