2012-11-20 15 views
-1

我有一個現有的ASP.NET MVC應用程序運行良好。它提供了一組具有一組管理功能的人員。我現在的任務是允許更大的團隊訪問完全相同的應用程序的非常有限的部分。ASP.NET MVC區域是將應用程序中的功能分離爲管理員和常規用戶的好方法嗎?

是一個ASP.NET MVC區域的方式來做到這一點?我問的原因是因爲我想讓所有用戶訪問同一個網頁(例如mysite.com),我希望外觀保持不變(利用相同的母版頁文件或_Layout.cshtml )。

當前的設置是,所有用戶對系統所有數據具有相同的訪問權限(完整)。

所以,當鮑勃去

/People/Index 

他看到的一切,當Sally,她看到了同樣的事情。

現在我需要讓更多的人訪問這個相同的東西。所以,當辛迪去

/People/Index 

所有她看到的人誰直接彙報給了她,與同爲戴維,和其他人誰沒有特別的「管理員」組誰可以完全訪問所有的組成部分。

這裏的uri對我來說並不重要;但我想要做的是能夠回收相同的佈局和視圖,同時使用不同的控制器集(其中有額外的業務邏輯來僅顯示數據子集)。

是否是ASP.NET MVC Area的正確方法?如果沒有,一個指針在正確的方向?

+0

你有沒有考慮和拒絕的只是限制進入各種面值ts的視圖按照:http://stackoverflow.com/questions/4881602/authorise-part-of-a-view-in-asp-net-mvc? –

回答

1

如果唯一的要求是數據僅限於與用戶直接相關的人員/項目,我會在您的數據層中執行此操作。當你去加載用戶列表時,只返回Cindy可以訪問的用戶。也許有一個用戶表標誌用於用戶是否是管理員用戶。

public IEnumerable<User> GetUsers(User requestingUser) 
{ 
    if(requestingUser.IsAdmin) // return your full list of users 

    return // list of users filtered by reporting to requestingUser 
} 

如果你做這一切的邏輯在數據層,用戶都使用相同的網站,並通過相同的頁面流量,正是顯示的頁面是有限的。當然你也可以在渲染某些部分視圖的時候測試用戶的管理標誌等。

+0

這似乎是我可能想要做的事情,但我希望通過內置的某些東西來獲得它,而不是依靠我的代碼來分離它們。 – Nate

0

我認爲你和ASP MVC在一個很好的軌道上你想要看的東西是在你的角色中實現應用程序和基於角色給用戶提供某些信息,如果用戶執行相同的功能我不會與區域去如果我正確理解您的問題你沒有開發同一個應用程序,如博客,購物等有完全相同的應用程序不同的功能請看角色和成員

http://www.asp.net/web-forms/videos/how-do-i/how-do-i-secure-my-site-using-membership-and-roles

+0

我已經嘗試了角色,並且遇到了「角色」的問題。AddUserToRole(「Admin」)'因爲我沒有提供者(我不是真的想要一個,因爲我想在用戶登錄時設置角色) – Nate

+0

然後在用戶表中編寫你自己的角色管理,就像給角色角色到用戶管理員,編輯等等,然後根據用戶登錄獲取他/她的角色並呈現他的具體觀點 –

相關問題