Servicestack JWT UserAuth null

Servicestack JWT UserAuth null

从 postman 使用 JWT 时。我得到一个不记名令牌。但是从服务调用 UserAuth 时的所有请求都是空的。同样在我的自定义 AuthUSerSession 会话中为空。

我从身份验证设置中删除了 basicauth。贴在下面。并且它仍然使用 basic 进行身份验证并且会话仍然为空。我想我错过了什么。有人可以帮我吗?

    public class CustomUserSession : AuthUserSession
        {
               public override bool IsAuthorized(string provider)
                {
                    string sessionKey = SessionFeature.GetSessionKey(this.Id);
                    var cacheClient = HostContext.TryResolve<ICacheClient>();

                    CustomUserSession session = cacheClient.Get<CustomUserSession>(sessionKey);
 if (session == null)
            {
                return false;
            }

            return session.IsAuthenticated;
        }
    }

//我的授权设置

Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                new IAuthProvider[]
                {

                    new JwtAuthProvider(AppSettings) {
                        CreatePayloadFilter = (payload,session) =>
                            payload["CreatedAt"] = session.CreatedAt.ToUnixTime().ToString(),

                        InvalidateTokensIssuedBefore = DateTime.Now,
                         SetBearerTokenOnAuthenticateResponse = true,
                        AuthKeyBase64 = AppSettings.GetString("jwt.auth.key"),
                        RequireSecureConnection = false,
                        }, //JWT TOKENS
                    new CredentialsAuthProvider(AppSettings)
                })
            {
                HtmlRedirect = "/",
            });

JWT's enables stateless authentication where instead of the User Session 持久保存在服务器上(并由 cookie 引用),它完全封装在 JWT Bearer Token 中。

当您使用 JWT Auth 时,您没有使用服务器会话,会话是在创建 JWT Bearer Token 时从用户会话的快照创建的,即通​​常在身份验证时,或者当从刷新令牌中检索到新的不记名令牌。

我不确定您为什么要尝试从 Session 实例中检索 Session?实例本身应包含由 SessionAs<T>GetSession() API 从 IRequest 或服务中检索的会话,例如:

public object Any(MyRequest request)
{
   var session = SessionAs<CustomUserSession>();
}

从 JWT 创建的会话仅包含部分会话,JWT 文档展示了如何 include additional info within a JWT payload