2014-02-12 46 views
1

使用角色將不勝感激幫助就這個問題:MVC5 - 在控制器

我想用我自己的角色,像我一樣對MVC4(自定義成員資格),即[授權(角色=「管理員」)]一些控制器。 我對新身份的事情有點困惑。

後來,我還需要使用相同的角色API控制器。

有人能解釋如何以最簡單的方式,我可以實現以下的事情:

  1. 閱讀從我的SQL數據庫(實體)「登錄」類,它擁有用戶名,密碼和角色。 (角色是角色的一個枚舉,{Admin = 1,Manager = 2 ...}
  2. 使用我的Login中的角色,並將其轉換爲與新的「Identity」一起使用
  3. 使用[授權(角色= 「管理員」)],[使用AllowAnonymous]等
  4. 管理API控制器,具有同樣的事情。

我讀過有關自定義的東西,但它似乎太複雜了。

任何人都有一個簡單的例子,說明如何使用它簡單明瞭?

謝謝

回答

2

我做這樣的事情:

// Just for Reference 
public interface IUserIdentity 
{ 
    Guid UserId { get; set; } 
    string UserName { get; set; } 

} 

通行證,其中將包含您的角色列表..

List<Claim> claims = new List<Claim>(); 

claims.Add(新索賠(ClaimType。角色, 「管理員」));

public ClaimsIdentity CreateIdentity(IUserIdentity user, IEnumerable<Claim> claims, string authenticationType) 
    { 
     var identity = new ClaimsIdentity(claims, authenticationType); 
     identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserId.ToString())); 
     identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName)); 
     return identity; 
    } 

如果您使用的是ASP.NET標識,則可以輕鬆完成。 「開箱即用」的會員資格仍然很糟糕。

1

如果您已經擁有自己的身份系統,那麼使用ASP.NET身份的原因是什麼?你需要索賠支持嗎?

ASP.NET身份可以做所有你所描述的東西,但它是很難將它集成到現有的會員系統(因爲ASP.NET身份被開發爲ASP.NET平臺上替換現有會員框架) 。你的角色系統是否特別,f.e.是否有任何業務規則集成?如果不是,則不應該很難將角色系統轉換爲ASP.NET Identity提供的角色系統。

我會嘗試從一個角度ASP.NET標識點回答你兩點:

  1. 這是由IdentityUser類處理。你會發現一個角色,UserName和PasswordHash屬性。如果您想定製它,您可以在派生類中添加新屬性。請記住,角色屬性的IdentityUserRoles的集合,這意味着沒有內置的枚舉(它,而不是指向IdentityRole類)。
  2. 不必要的(見點1)。
  3. 可以從ASP.NET身份使用。和以前一樣工作。
  4. 工作方式一樣了。
相關問題