我需要为MultiTenant Web应用程序开发自定义RoleProvider。 在数据库级别,我们有一个表格将用户与角色与租户联系起来。
我的问题是,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接口,将租户作为输入的一部分?
答案 0 :(得分:0)
嗯,只是告诉你我在我的案子中做了什么:
由于我们的路线采用http://[tenantName].[domain]/[App]/[Area]
形式,我们最终从请求中获取[tenantName]
,因为它是唯一的,并且租户和UserName
来自参数我可以在UsersInTenants'
表上进行选择。
使用cookie作为传递附加信息的方式也可以完成同样的工作。
因此,您可以使用Cookie访问请求,但是对于我研究的内容,在大多数情况下,会话尚未初始化。
希望它有所帮助!