首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多租户ServiceStack中的自定义八月请求

多租户ServiceStack中的自定义八月请求
EN

Stack Overflow用户
提问于 2015-01-27 10:59:30
回答 1查看 271关注 0票数 1

我已经在基于ServiceStack的web服务应用程序中使用自定义身份验证提供程序。

我正在重写身份验证方法,并根据多个后端租户数据库之一验证我的用户。目前,我通过将API键与数据库字符串匹配来确定租户数据库。

代码语言:javascript
代码运行次数:0
运行
复制
public override object Authenticate(
   IServiceBase authService, 
   IAuthSession session, 
   Auth request) // <- custom object here, MyCustomAuth request
{
   // ...
}

当每个应用程序都是针对单个租户(租户/客户可以构建自己的应用程序并使用该API密钥)时,这是可行的。接下来,我想构建一个多租户的移动应用程序。因此不能使用API key方法,因为我不能期望每个用户都输入它,因此我无法确定哪个租户正在使用该应用程序。

我想修改Auth对象,以便包含TenantId (用户在登录时提供)。但是,我不知道如何定制该对象。

是否存在自定义Auth对象,或者我必须找到另一种解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 18:03:11

您不能修改使用的内置Authenticate请求DTO,但是可以使用它的Dictionary<string, string> Meta属性与身份验证请求一起发送额外的元数据,例如:

代码语言:javascript
代码运行次数:0
运行
复制
client.Post(new Authenticate {
    ...
    Meta = new Dictionary<string,string> {
        {"TenantId", tenantId},
    }
}

或者,您可以在QueryString或Headers中发送其他信息,并通过以下方式访问IRequest

代码语言:javascript
代码运行次数:0
运行
复制
var tenantId = authService.Request.QueryString["TenantId"];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28168870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档