Servicestack JWT UserAuth null

当使用邮递员的 JWT 时。我得到一个不记名令牌。但从服务调用 UserAuth 时的所有请求均为空。另外,在我的自定义 AuthUSerSession 会话中,该会话为空。


我从身份验证设置中删除了 basicauth。粘贴在下面。它仍然通过基本身份验证,并且会话仍然为空。我想我错过了一些东西。有人可以帮我吗?


    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 = "/",

            });


慕娘9325324
浏览 130回答 1
1回答

森林海

JWT 支持无状态身份验证,其中用户会话不是保留在服务器上(并由 cookie 引用),而是完全封装在 JWT 承载令牌中。当您使用 JWT Auth 时,您没有使用服务器会话,会话是在创建 JWT 承载令牌时(即通常在身份验证时)或在创建新的承载令牌时从用户会话的快照创建的。从刷新令牌中检索。我不确定您为什么要尝试从 Session 实例中检索 Session ?实例本身应包含由服务或服务内的 API 检索的会话,SessionAs<T>例如:GetSession()IRequestpublic object Any(MyRequest request){    var session = SessionAs<CustomUserSession>(); }
打开App,查看更多内容
随时随地看视频慕课网APP