0

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

在此处输入图像描述

我的问题是 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 类中(所有控制器都继承自该类)。

Membership 和 Role Providers 在一个单独的项目中,所以我看不到使用当前租户的方法。我想我可以在 web 应用程序项目中创建我的自定义 RoleProvider。

关于如何实现将租户作为输入的一部分的 RoleProvider 接口的任何想法?

4

1 回答 1

0

好吧,只是为了告诉你我在我的情况下做了什么:

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

使用 cookie 作为传递附加信息的一种方式也可以做到这一点。

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

希望能帮助到你!

于 2012-11-01T15:54:25.930 回答