我正在开发一个多租户ASP.NET MVC应用程序。
到目前为止,我们一直在使用HttpContext为请求存储一些对象(技术上由租户分区)。
但是,我们需要使用TempData(使用Session)并设置身份验证cookie。
我们的规范:
会话域是否可识别?好像是。
我可以在身份验证Cookie上设置多个域吗?
对可能会让我感到困惑的任何其他事情的建议将不胜感激。真的,我只需要了解每个租户需要分区的内容(到目前为止,我已经对每个租户的文件系统,数据库和缓存进行了分区)。
由于
本
答案 0 :(得分:4)
是否了解会话域?
默认情况下,会话由Cookie跟踪,并且由于Cookie仅限于同一个域,因此会话不仅可以识别域,还可以识别应用程序,这意味着如果您在同一个域中有两个应用程序,则它们不会共享会话。 / p>
我可以在身份验证Cookie上设置多个域吗?
没有。 Cookie不能在域之间共享。但与会话相反,您可以在同一个域中的多个应用程序之间共享它们(通过将domain
属性设置为web.config中<forms>
标记中的顶级域名。这是允许在同一域上的应用程序之间实现单点登录的原因。如果您希望在不同域上的应用程序之间实现单点登录,则需要different approach。
答案 1 :(得分:0)
您可能需要查看Session Partitioning。
<configuration>
<system.web>
<sessionState
mode="StateServer"
partitionResolverType=
"IndustryStrengthSessionState.PartitionResolver" />
</system.web>
</configuration>
但我不相信你可以开箱即用跨域分享会话。您可能需要添加自定义会话同步,其中每个域会话通过自定义算法链接到同一用户/租户等。