【发布时间】:2014-07-19 01:17:07
【问题描述】:
我无法让会话的直接操作正常工作。
使用源代码中的一些代码和 Demis 的提示,我在我们的单元测试客户端中整合了一些东西来验证用户,然后恢复会话。
我从服务中获取的 AuthResponse 的 SessionId 为 533,这导致构造的 urn 为“urn:iauthsession:533”,而 Redis 缓存中的 urn 为“urn:iauthsession:sbQBLwb1WpRj8DqQ7EdL”,所以显然,在运行代码中传递给 urn builder 的东西不仅仅是会话 id(或者使用的重载不是我认为的那样)。
这是我们在测试基类中使用的代码,用于尝试从 auth 调用中恢复会话:
var client = new JsonServiceClient(ServiceTestAppHost.BaseUrl)
{
UserName = userName,
Password = password,
AlwaysSendBasicAuthHeader = true
};
var response = client.Post<AuthResponse>("/auth/basic", new Auth() { UserName = userName, Password = password, RememberMe = true });
var sessionKey = IdUtils.CreateUrn<IAuthSession>(response.SessionId);
var session = _appHost.TryResolve<ICacheClient>().Get<SsoUserSession>(sessionKey);
知道为什么构造的骨灰盒不匹配吗?
【问题讨论】:
标签: session servicestack