在我的应用程序中,用户可以创建帖子,但只有帖子的创建者可以删除它。
所以当我列出每个帖子时,我必须做出决定。
那么在控制器或视图中哪个更适合这个逻辑决策?
现在我在视图中执行:
控制器:
class PostController{
@RequestMapping("post/list")
public void list(Model m){
List<Post> posts=queryPosts();
m.addAttribute(posts);
}
}
post_list.ftl
<#list ${posts} as post>
<span>${post.name}</span>
<#if ${post.owner}==${session.user}>
<a href="post/${post.id}/delete">Delete</a>
</#if>
</#list>
然后我想知道这是否是最好的做法?
如果将控制器中的逻辑判断更好,那么如何制作呢?添加帖子的editable
字段?
答案 0 :(得分:2)
最终必须在控制器中做出决定。如果恶意用户尝试访问delete
页面,会发生什么情况?
但是,视图中的优良做法是只允许用户查看他们有权访问的页面的链接。
Spring Security
提供了多种方法来保护基于用户,角色或组的URL或例程。
答案 1 :(得分:0)
关于哪个项目可以在控制器中由哪个用户删除的最终决定和逻辑。具有讽刺意味的是,从我在你的代码中看到的,这实际上是发生了什么 - 你只是决定是否在你的用户界面中显示基于当前用户的删除链接 - 这在我看来很好。