2015-01-12 60 views
0

考慮一下衆所周知的包含課程和教師的示例數據模型。一門課程有一位教練有很多課程。現在假設我們想將此模型基於具有用戶和角色的ASP.NET Identity模型。直接的方法是讓教師繼承ASP.NET身份用戶。但是,假設我們希望學校的看門人也是系統的用戶。而且,沒有什麼能阻止教練在下午成爲看門人。爲每個用戶分配一個角色是不好的做法嗎?

沒有多重繼承,所以你不能是InstructorUser和JanitorUser。如果用戶的角色是教師,那麼用戶只有課程,所以IMO不是一個乾淨的方法讓每個用戶與課程有關係(他可能畢竟不是教師)。我正在考慮爲每個用戶創建一個單獨的InstructorRole實例(從IdentityRole繼承),如果他是一名講師。

我看到簡單的例子有一些通用角色,比如「admin」或「guest」。至少爲每個用戶分配一個角色是不好的做法?

回答

1

這些角色的問題是你要怎麼處理它們?

如果您的角色是用於限制對控制器的訪問,那麼您將如何爲(可能)無限數量的用戶/角色定義控制器上的權限?

我會回到您的繪圖板並重新考慮您的許可系統如何工作以及它實際需要什麼。

+0

這些角色的目的是存儲用戶擁有的屬性/關係,當且僅當他假設該角色。考慮到這一要求,您將如何對其進行建模而沒有無限數量的角色? –

+0

如果這些是用戶的屬性,爲什麼不把它們作爲'* User'對象的實際屬性?身份可以用很少的努力做到這一點。或者,如果每個用戶需要一組不同的屬性,則將它們存儲爲索賠 - 這些需要較少的維護。 – trailmax

相關問題