我无法直接操作会话。
使用来自源代码的一些代码和来自Demis的提示,我在单元测试客户端中放置了一些内容来授权用户,然后恢复会话。
我从服务获得的AuthResponse的SessionId为533,导致构造的urn为“urn:iauthsession:533”,而Redis缓存中的urn为“urn:iauthsession:sbQBLwb1WpRj8DqQ7EdL”,所以显然,在运行代码中传递给urn构建器的东西不仅仅是会话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);
知道为什么构造的urn不匹配?