servicestack,Session,Authentication,Caching,servicestack" /> servicestack,Session,Authentication,Caching,servicestack" />

Session 更新不同的用户';ServiceStack中的会话

Session 更新不同的用户';ServiceStack中的会话,session,authentication,caching,servicestack,Session,Authentication,Caching,servicestack,我是ServiceStack的新手,我正在从事一个基于它的项目 该项目有管理面板,管理员可以重置用户密码,更新他们的信息等 会话使用ServiceStack提供的AzureCacheClient保存在Azure缓存服务中 我想要的是,当管理员更新某些用户的信息时,相同的更新应该反映缓存的IAuthSession对象。我可以访问ICacheClient(当然),但是我怎么知道每个用户会话的密钥呢?我有一个场景,我需要做类似的事情。我的解决方案是通过CustomUserSession向与用户相关的会

我是ServiceStack的新手,我正在从事一个基于它的项目

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

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


我想要的是,当管理员更新某些用户的信息时,相同的更新应该反映缓存的IAuthSession对象。我可以访问ICacheClient(当然),但是我怎么知道每个用户会话的密钥呢?

我有一个场景,我需要做类似的事情。我的解决方案是通过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);
           }
        }
     }                    
}
使用(var redis=\u appHost.TryResolve().GetClient())
{
var sessionkeys=redis.SearchKeys(“urn:iauthsession:*”);
foreach(sessionkeys中的var键)
{
var session=redis.Get(key);
if(会话!=null)
{
if(session.StudentId==SessionToFindId)
{
//对会话执行更新
redis.Set(键,会话);
}
}
}                    
}