当使用邮递员的 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 = "/", });
1 回答
森林海
TA贡献2011条经验 获得超2个赞
JWT 支持无状态身份验证,其中用户会话不是保留在服务器上(并由 cookie 引用),而是完全封装在 JWT 承载令牌中。
当您使用 JWT Auth 时,您没有使用服务器会话,会话是在创建 JWT 承载令牌时(即通常在身份验证时)或在创建新的承载令牌时从用户会话的快照创建的。从刷新令牌中检索。
我不确定您为什么要尝试从 Session 实例中检索 Session ?实例本身应包含由服务或服务内的 API 检索的会话,SessionAs<T>
例如:GetSession()
IRequest
public object Any(MyRequest request){ var session = SessionAs<CustomUserSession>(); }
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消