我已使用CustomUserSession配置了AuthFeature,并使用RedisCache作为用户身份验证库。然后我使用C#JSON服务客户端来验证服务,验证正常但缓存中的会话ID存储与cookie值不同。
Cookie:ss-id =>的 I0ZIuzLijch3IY9Tut0z
缓存:urn:iauthsession: brSXBQPjmIB6Srv6EPCv
请帮忙!
更新......
下面的代码使用JsonServiceClient:
using (var client = new JsonServiceClient("https://api.futabus.vn/api"))
{
var lRes = client.Post("/auth/credentials", new
{
UserName = user.UserName,
Password = user.Password
});
}
但是当我直接发布到https://api.futabus.vn/api/auth/credentials时,cookie值与响应对象和缓存中的会话ID相同。
答案 0 :(得分:0)
这包含足够的信息来识别问题,您至少应该显示用于发出请求的HTTP标头和代码。
但会话密钥是从sessionId派生的,如果它没有使用ss-id
,那么您可能会使用RememberMe=true
进行身份验证,在这种情况下,ServiceStack会存储User Session against the ss-pid Cookie instead 。如果不是,那么请仔细检查HTTP标头,因为您认为正在发送的Cookie可能不是正在发送的Cookie。
答案 1 :(得分:0)
我有3个申请:
1.主要网站:example.com
2.用户网站:id.example.com
3. API:api.example.com。所有cookie都限制在第一个(1)网站(根域)
所有网站都使用ServiceStack Framework 4.0编写。
当我使用JsonServiceClient从第二个(2)调用身份验证到api.example.com时,然后:
cookie存储在第一个(1)和cookie中,一旦呼叫认证不同,我就会得到。
我认为第一个(1)中的cookie存储已加密。
第一个(1)使用表单身份验证和web.config中的机器密钥设置
其他人有想法吗?