如果配置爲使用相同的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中獲得。
謝謝!非常感激! –