gpt4 book ai didi

c# - ServiceStack - SessionAs 导致 PreAuthenticate 被调用

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:49 25 4
gpt4 key购买 nike

我有一个简单的应用程序,它将 JwtAuthProviderReader 注册为唯一的 IAuthProvider。当我尝试使用 SessionAs 从服务方法访问 session 时,它似乎再次调用了 JwtAuthProviderReader PreAuthenticate

我查看了源代码,似乎 SessionAs 导致对未设置的 IRequest.Items[Keywords.Session] 的引用,因此它调用再次使用 PreAuth 过滤器。

This answer建议我可以使用 HttpContext.Current.Items 单例,但 session 也不存在于其中。如何在不再次调用 PreAuth 的情况下进入此处的 session ?

最佳答案

PreAuthenticate 需要执行才能访问附加到请求的用户 session ,在 JWT Auth 的情况下部分 session 嵌入在 JWT token 中。

但是一旦 session 从 JWT token 中检索后就不再被调用。

您可以通过在检索之前在 IRequest.Items 字典中设置 Keywords.HasPreAuthenticated 来防止再次调用 Auth Providers PreAuthenticate() session ,例如:

httpReq.Items[Keywords.HasPreAuthenticated] = bool.TrueString;

In your Service you can access your IRequest with base.Request

但是,如果您阻止 PreAuthenticate() 运行一次,您将无法从 JWT token 访问 session 。

关于c# - ServiceStack - SessionAs 导致 PreAuthenticate 被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com