2016-07-17 45 views
0

我在我的數據庫中創建了自己的自定義角色表,並且我還想創建一個自定義授權屬性。MVC自定義授權數據庫屬性

這裏是我到目前爲止,但我真的不知道如何着手:

private List<RoleModel> Roles; 
    private IRoleRepository repo; 
    private ICustomerRepository cust; 


    public bool CheckRoles(string UserId) 
    { 
     try 
     { 
      Roles = repo.GetAll().ToList(); 
      CustomerModel Customer = cust.Get(UserId); 
      int CustomerRole = Customer.RoleId; 
      RoleModel role = Roles.First(x => x.id == CustomerRole); 


     } 
     catch(Exception e) 
     { 
      return false; 
     } 
    } 

    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     base.OnAuthorization(filterContext); 
     string UserId = filterContext.HttpContext.User.Identity.GetUserId(); 



    } 

如果有人可以幫助我完成這一點,我將不勝感激。

謝謝!

+1

哪一部分你被卡住,你能詳細點嗎? –

回答

0

我認爲創建一個自定義的AuthorizeAttribute不是一個好主意。使用標準的AuthorizeAttribute是一個好習慣。

這是一個常見的情況有自己的角色表。重寫如何設置主體標識的角色並使用AuthorizeAttribute的Roles屬性更好。在用戶登錄時將角色設置爲一次索賠;它會比在每個請求的自定義授權屬性中從數據庫檢索角色要好。 設置你的要求CalimTypes.Role,然後保護您的控制器/行動有:

[Authorize(Roles = "admin")] 
+0

我製作我自己的角色表的原因是因爲您必須購買角色,因此每個角色都有一個價格列,而且默認情況下沒有。然而,你認爲給我的角色表一個ASPRoleId的外鍵並且以這種方式鏈接到它是一個好習慣嗎? – DevShadow