あなたが認証されていないユーザー情報を格納するためのセッションクッキーを使用する場合は、あなたが設定したいと思う:ユーザーは、それが既存のCookieを保存し認証しない場合
Plugins.Add(new AuthFeature(...) {
GenerateNewSessionCookiesOnAuthentication = false
});
をそうは、そうでない場合は、あなたがしたいと思いますユーザーがログインしたときに影響を受けない独自のCookieを設定して使用します。
SessionBagは、ユーザーセッションCookieを使用してUnAuthenticatedユーザーあなたのような何かをカスタムPOCOを移入することができます。ユーザーを認証は、セッションバッグから情報を取得し、OnAuthenticated()
イベントを使用して、型指定されたカスタムUserSessionにそれを追加したときに
var unAuthInfo = SessionBag.Get<UnAuthInfo>() ?? new UnAuthInfo();
unAuthInfo.CustomInfo = request.CustomInfo;
SessionBag.Set(unAuthInfo);
例:
public class CustomUserSession : AuthUserSession
{
[DataMember]
public string CustomInfo { get; set; }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session,
IAuthTokens tokens, Dictionary<string, string> authInfo)
{
var unAuthInfo = authService.GetSessionBag().Get<UnAuthInfo>();
if (unAuthInfo != null)
this.CustomInfo = unAuthInfo.CustomInfo;
}
}
SSセッションCookieを使用すると仮定すると、anonユーザーにデフォルトでss-pidセッションIDを使用させる方法はありますか? – richardwhatever
@richard何[ss-optセッションCookie](http://docs.servicestack.net/sessions)を 'ss-opt = perm'に変更するか、' var sessionBag = new SessionFactory.SessionCacheClient(Cache 、Request.GetPermanentSessionId()); ' – mythz
ss-opt = permを設定すると、最初の(フレッシュなユーザー、クッキーなし)リクエストでは十分早くないように見えるので、セッションはredisで作成されます。 ss-id。応答にはss-opt = permが含まれています。次に、次回の要求でss-pidを使用して新しいanonユーザーセッションが作成され、ss-idセッションはキャッシュに冗長なままになります。新鮮なユーザー要求がss-pidにすぐに保存されるようにするにはどうすればよいですか? – richardwhatever