2012-10-31 70 views
0

我需要爲MultiTenant Web應用程序開發自定義RoleProvider。 在數據庫層面,我們有一張表格,將用戶與角色與租戶關聯起來。MultiTenant MVC應用程序中的自定義RoleProvider

enter image description here

我的問題是RoleProvider得到用戶角色剛好路過的用戶作爲參數,我們需要採取的租戶考慮。

在RoleProvider實現我們:

public override string[] GetRolesForUser(string username) 
{ 
    //Code to retrieve roles from repo 
} 

由於角色是在特定租戶的用戶,我們需要:

public override string[] GetRolesForUser(string username, int tenantId) 
{ 
    //Code to retrieve roles from repo 
} 

目前的租戶存儲在ControllerBase類(一個所有的控制器都會接受)。

成員資格和角色提供者在一個單獨的項目中,所以我沒有看到使用當前租戶的方法。我想我可以在Web應用程序項目中創建自定義RoleProvider。

關於如何實現將Tenant作爲輸入的一部分的RoleProvider接口的任何想法?

+0

你可以定義Tenant嗎? – DarthVader

+0

租戶是一個組織,因此,對於每個組織,用戶都有一定的角色。 – Romias

+0

基本上你需要的是裝飾模式。如果另一個項目不允許你這樣做,則需要將其包裝在另一個類中。 – DarthVader

回答

0

嘛,只是爲了告訴你我在我的情況下做的:

由於我們的路線是我們最後從請求的[tenantName]http://[tenantName].[domain]/[App]/[Area]的形式,因爲它是獨一無二的,並與承租人和作爲參數的UserName,我可以在我們的UsersInTenants'表上做我的選擇。

使用cookie作爲傳遞aditional信息的方式也可以做到這一點。

所以你可以通過cookies訪問請求,但是對於我研究的內容,Session在大多數情況下還沒有初始化。

希望它能幫助!

相關問題