必須有這樣一個普通的問題,簡單的解決辦法,所以我很抱歉,前期爲我的無知:如何授權用戶只能看到他自己的記錄用asp.net身份2.0
我有一個多用戶Web應用程序(與EF6的Asp.net MVC5)即是允許用戶查看和/或修改存儲在幾個相關表格(公司,Csearch,候選人)中的相關數據。 (更多細節見下文)。他們不應該看到任何其他數據(例如通過篡改URL)。
我使用Asp.net Identity 2.0進行身份驗證,並希望將其用於提及的授權。用戶數據存儲在標準的AspNetUser表中。我僅對Identity和我的業務表使用一個上下文。
我想我必須使用角色或可能聲明來解決這個問題,但我找不到任何指導如何做到這一點。任何人都可以將我指向正確的方向嗎?
我目前通過向CompanyController添加LINQ條件解決了這個問題(對於公司模型),但這似乎不是解決問題的非常安全和正確的方法。
public ActionResult Index(int? id, int? csearchid)
{
var companies = db.Companies
.OrderBy(i => i.CompanyName)
.Where(t => t.UserName == User.Identity.Name);
return View(companies);
我的DataModel很簡單,我是有腳手架使用Visual Studio 2017年 通過第一我已經建立了一個關係型數據模型是大致如下EF6代碼:
,公司可以有多個搜索(一至許多)。 每個搜索可以有多個候選人(一對多)。 公司可以有多個USERS登錄。 用戶保存在由ASP.Net Identity生成的AspNetUsers表中。
我公司的模型如下所示:
public class Company
{
public int CompanyID { get; set; }
// Link naar de Userid in Identity: AspNetUsers.Id
[Display(Name = "Username")]
public string UserName { get; set; }
public string CompanyName { get; set;}
public string CompanyContactName { get; set; }
[DataType(DataType.EmailAddress)]
public string CompanyEmail { get; set; }
public string CompanyPhone { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
//One to Many Navigatie links
public virtual ICollection<Csearch> Csearches { get; set; }
你所做的是其中的一部分。您可能希望更具體的訪問權限(包含角色)使用具有角色或自定義屬性的「授權」屬性。 –