2012-04-01 65 views
1

在我的應用程序中,用戶可以創建帖子,但只有帖子的創建者可以刪除它。把邏輯決定放在控制器或視圖中

所以我必須在列出每個帖子時作出決定。

那麼哪個更適合這個邏輯決策,在控制器還是視圖中?

現在我做到這一點的看法:

控制器:

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

關於什麼項目可以由控制器中的哪個用戶刪除的最終決定和邏輯。具有諷刺意味的是,從我的代碼中可以看到,這實際上是發生了什麼 - 您只是決定是否顯示基於當前用戶的用戶界面中的刪除鏈接 - 我認爲這很好。

+0

'最後的決定。 ..在控制器中,然後你說'做出決定以顯示你的UI中的刪除鏈接....在我看來是很好的。「我不完全確定你的意思。 – hguser 2012-04-01 13:08:25

+0

@hguser - 你當前的代碼很好,它實際上並沒有在UI端刪除邏輯。它具有確定何時顯示刪除***鏈接***的演示邏輯。那個imo沒什麼問題。 – Perception 2012-04-01 13:15:32

2

決定最終必須在控制器中進行。如果惡意用戶嘗試訪問delete頁面,會發生什麼情況?

但是在視圖中,只讓用戶看到他們有權訪問的頁面的鏈接是一種很好的做法。

Spring Security提供了多種方法來保護基於用戶,角色或組的URL或例程。

+0

事實上,即使我在控制器中做出決定,當從客戶端發送url'post/1/delete'時,我也會檢查用戶是否有權限。\ – hguser 2012-04-01 13:09:23

相關問題