如果配置为使用相同的Redis缓存提供商和自定义验证提供者,那么你只需要发送相同Session Cookies以2个不同的ServiceStack实例被作为身份验证的治疗同时。
(托管在同一个域中的另一个应用程序)
如果在同一个域中的托管在不同的主机,如:
domain.com/app1
domain.com/app2
那么会话cookie将被自动发送向任一应用程序发出Ajax请求时。
但是如果某个应用的是在不同的子域,例如:
app1.domain.com
app2.domain.com
他们视为默认2个不同的领域,这将无法共享Cookie,但您可以指定饼干应适用于您的根域,而不是由你Web.config
配置它:
<system.web>
<httpCookies domain=".domain.com" />
</system.web>
在您的Ajax请求将发送cookie到两个子域。
如果应用程序在2个不同的域承载您将无法共享cookies在这种情况下,你可以尝试把他们作为Custom HTTP Headers如果您使用的是哪个ServiceStack的TypeScript JsonServiceClient你可以填充它:
var client = new JsonServiceClient(baseUrl);
client.headers.set('X-ss-id', sessionId);
的那么问题就变成了让Ajax客户端跨您需要在您的CorsFeature注册域名,例如发送自定义HTTP标头:
Plugins.Add(new CorsFeature(
allowOriginWhitelist: new[] { "http://source.domain.com" },
allowCredentials: true,
allowedHeaders: "Content-Type, Allow, Authorization, X-ss-id"));
注:ID在返回的会话cookie,或者您可以通过从经过身份验证的用户调用/auth
端点从AuthenticateResponse DTO中获得。
谢谢!非常感激! –