我是一名MVC新手,並試圖構建一個簡單的Web應用程序,用戶可以在其中註冊和登錄(已經完成了MVC的身份示例)並創建了一些對象(用於例如,做一個列表中的項目),除非他們另有說明,否則基本上與他們綁定。ASP .Net MVC用戶的所有權和授權
基本上,如果沒有另行說明,一個待辦事項不能被其他用戶看到或編輯。
我試圖完成的第一步是僅使用用戶的項目填充列表。
有人可以請指出我在正確的方向嗎?
我是一名MVC新手,並試圖構建一個簡單的Web應用程序,用戶可以在其中註冊和登錄(已經完成了MVC的身份示例)並創建了一些對象(用於例如,做一個列表中的項目),除非他們另有說明,否則基本上與他們綁定。ASP .Net MVC用戶的所有權和授權
基本上,如果沒有另行說明,一個待辦事項不能被其他用戶看到或編輯。
我試圖完成的第一步是僅使用用戶的項目填充列表。
有人可以請指出我在正確的方向嗎?
使用ASP.NET Identity,它會處理您的任何註冊和用戶管理,甚至可以根據您的需要定義roles和claims。現在讓我們假設你有一個像下面這樣的模型,並且你想要確保實體是由一個已定義的用戶構建的,那麼你將UserId作爲外鍵包含在你的模型中,例如:
public class CustomModel
{
public Guid Id { get; set; }
public string ObjectExample { get; set; }
public string ObjectExample2 { get; set; }
//FK to user
public string UserId { get; set; }
}
任何時候你想獲得userid的值,你可以調用身份的方法來獲取用戶標識象下面這樣:
User.Identity.GetUserId()
希望這給你一個想法。
UPDATE
比方說,你想第一組數據插入到你的數據庫,它必須由用戶來定義。那麼你必須填寫你的模型,如下所示:
var entity = new CustomModel
{
Id = Guid.NewGuid(),
ObjectExample = "string",
ObjectExample2 = "secString",
UserId = User.Identity.GetUserId() //Identity Lib will provide this method for you
};
using(MyDbContext context = new MyDbContext())
{
context.CustomModel.Add(entity);
}
在我看來,它更多的是一個應用程序邏輯,而不是授權。實現它的最簡單方法是查詢當前登錄用戶創建的項目,以便顯示這些項目或對其進行編輯。
授權不是關於顯示特定的用戶內容(這是個性化),而是基於關於用戶的信息和一組預定義的授權規則,允許/限制用戶訪問特定頁面或在門戶上執行特定操作。下面是幾個例子:
正如您從示例中看到的,授權不太適合從數據庫中獲取行(如您的情況)。
經驗法則可能試圖標記具有授權屬性的操作或頁面。所以如果你想做「個性化授權」,你將不得不爲每個用戶創建行動/頁面,這不是你想要做的事情嗎?
很好解釋。 – Valkyrie
謝謝,我絕對需要在授權和相關事宜上更多地告知我自己! – mwentosana
非常感謝,這幫助我走上正軌!只是一個快速的後續問題:當我創建一個對象時,如何自動將我的userId設置爲它? – mwentosana
@Iris您是先使用實體框架代碼還是先使用數據庫? – Valkyrie
我首先使用實體框架代碼。 – mwentosana