MultiTenant MVC应用程序中的自定义RoleProvider

时间:2012-10-31 02:44:17

标签: asp.net-mvc-3 multi-tenant roleprovider

我需要为MultiTenant Web应用程序开发自定义RoleProvider。 在数据库级别,我们有一个表格将用户与角色与租户联系起来。

enter image description here

我的问题是,RoleProvider只是通过User as参数获取用户角色,我们需要考虑租户。

在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。

如何实现RoleProvider接口,将租户作为输入的一部分?

1 个答案:

答案 0 :(得分:0)

嗯,只是告诉你我在我的案子中做了什么:

由于我们的路线采用http://[tenantName].[domain]/[App]/[Area]形式,我们最终从请求中获取[tenantName],因为它是唯一的,并且租户和UserName来自参数我可以在UsersInTenants'表上进行选择。

使用cookie作为传递附加信息的方式也可以完成同样的工作。

因此,您可以使用Cookie访问请求,但是对于我研究的内容,在大多数情况下,会话尚未初始化。

希望它有所帮助!