4

私は ServiceStack を初めて使用し、それに基づくプロジェクトに取り組んでいます。

プロジェクトには管理パネルがあり、管理者はユーザーのパスワードをリセットしたり、情報を更新したりできます。

セッションは、ServiceStack で提供される AzureCacheClient を使用して Azure Cache サービスに保持されます。

私が欲しいのは、管理者が一部のユーザーの情報を更新するときです。その同じ更新は、キャッシュされた IAuthSession オブジェクトを反映する必要があります。もちろん ICacheClient にアクセスできますが、各ユーザーのセッションが保持されているキーをどのように知ることができますか?

4

1 に答える 1

3

私は似たようなことをする必要があるシナリオを持っています。私の解決策は、CustomUserSession を介してユーザーに関連するセッションに識別子を追加することでした。

次に、REDIS クライアントを使用して、ユーザー識別子を持つセッションが見つかるまですべてのセッションをループし、セッションを取得して更新を実行し、セッションを再度保存します。

using (var redis = _appHost.TryResolve<IRedisClientsManager>().GetClient())
{
    var sessionkeys = redis.SearchKeys("urn:iauthsession:*");

    foreach (var key in sessionkeys)
    {
        var session = redis.Get<CustomUserSession>(key);
        if (session != null)
        {
           if (session.StudentId == SessionToFindId)
           {
               //Perform updates to session
               redis.Set(key, session);
           }
        }
     }                    
}
于 2013-08-20T05:33:54.750 に答える