我对 ServiceStack 相当陌生,我正在开发一个基于它的项目。
该项目有管理面板,管理员能够重置用户密码,更新他们的信息等。
使用 ServiceStack 提供的 AzureCacheClient 将会话保存在 Azure 缓存服务中。
我想要的是当管理员更新一些用户的信息时,同样的更新应该反映缓存的 IAuthSession 对象。我可以访问 ICacheClient(当然),但我怎么知道每个用户会话所在的密钥?
我对 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);
}
}
}
}