我需要开发一个自定义的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类中(所有控制器都继承自该类)。
成员资格和角色提供程序位于单独的项目中,因此我看不到使用当前租户的方法。我想我可以在web应用程序项目中创建我的自定义RoleProvider。
关于如何将租户作为输入的一部分来实现RoleProvider接口,您有什么想法吗?
发布于 2012-11-01 23:54:26
好吧,我只想告诉你我在我的案例中做了什么:
因为我们的路由是以http://[tenantName].[domain]/[App]/[Area]的形式出现的,所以我们最终从请求中获得了[tenantName],因为它是唯一的,并且有了租户和作为参数的UserName,我可以在UsersInTenants'表上进行选择。
使用cookie作为传递额外信息的一种方式也可以做到这一点。
因此,您可以使用cookie访问请求,但根据我的研究,在大多数情况下,会话尚未初始化。
希望它能帮上忙!
https://stackoverflow.com/questions/13150548
复制相似问题