【问题标题】:ServiceStack Accessing Session DirectlyServiceStack 直接访问 Session
【发布时间】: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


    【解决方案1】:

    现在应该是 fixed with this commit,在 v4.0.22 中可用,即 now available on MyGet

    【讨论】:

    • 3.9.71 中是否也存在此错误?它是否会导致服务扩展方法 GetSession() 似乎(偶尔)返回错误会话的奇怪问题?
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多