4

我对 ServiceStack 相当陌生,我正在开发一个基于它的项目。

该项目有管理面板,管理员能够重置用户密码,更新他们的信息等。

使用 ServiceStack 提供的 AzureCacheClient 将会话保存在 Azure 缓存服务中。

我想要的是当管理员更新一些用户的信息时,同样的更新应该反映缓存的 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 回答