ServiceStack JsonServiceClient OnAuthenticationRequired

2023-12-29

这是 StackOverflow 上的第一篇文章,所以如果我做错了什么,请耐心等待。

我正在使用 ServiceStack 创建 RESTful Web 服务。 在开发示例 Windows 客户端时,我发现了 JsonServiceClient.OnAuthenticationRequired 属性,但无法使其正常工作。 我没有找到有关它的文档 - 我假设这是一种委托方法,用于在服务器需要身份验证时提供用户凭据 - 但我无法让它工作。

这里是我尝试使用的一些示例代码(它是 VB.Net,但对于 C# 爱好者来说也应该非常容易阅读)。

Private _clientAuthenticationRequested As New Action(Of WebRequest)(AddressOf InteractiveAuthentication)

Private Sub Login
....
    _client = New JsonServiceClient(WEBSERVER_ADDRESS)
    _client.OnAuthenticationRequired = _clientAuthenticationRequested
....
End Sub
Private Sub InteractiveAuthentication(SourceRequest As WebRequest)
    SourceRequest.Credentials= ... set some valid credentials
End Sub

即使客户端启动需要身份验证的请求,也永远不会触发“InteractiveAuthentication”。

有人知道属性的含义和用法吗?

非常感谢 阿尔贝托


感谢 Marfarma 为我指明了正确的方向。

经过对源代码的一些研究后,我发现只有在提供用户名和密码时 ShouldAuthenticate 才会返回 true。在这种情况下,OnAuthenticationRequired 委托被正确触发并且运行得非常好,允许客户端进行身份验证并避免未经授权的异常。

只是总结一下:

Private _clientAuthenticationRequested As New Action(Of WebRequest)(AddressOf InteractiveAuthentication)

Private Sub Login
....
    _client = New JsonServiceClient(WEBSERVER_ADDRESS)
    _client.OnAuthenticationRequired = _clientAuthenticationRequested
    'Requided in order to allow ShouldAuthenticate to return true and trigger OnAuthenticationRequired
    _client.UserName = "usr"
    _client.Password = "pwd"
....
'Now - I can execute my request: which will initially fail and trigger the InteractiveAuthentication delegate
response = _client.Get(Of MKXData.MKXPriceResponse)(New MKXData.MKXPricesRequest With {.Ticker = "US10YY"})

End Sub
Private Sub InteractiveAuthentication(SourceRequest As WebRequest)
    'here I start the full authentication procedure (simulating the interactive User to provide his\her credentials)

    Dim authResponse As Auth
    AuthResponse = _client.Send(Of Auth)(New Auth With {.provider = CredentialsAuthProvider.Name,
                                                .UserName = "User",
                                                .Password = "Password",
                                                .RememberMe = True})
    'after successfully executing the authentication, my former request is executed successfully and the results are returned.

End Sub

希望这对其他人有用。

非常感谢您的帮助 阿尔贝托

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ServiceStack JsonServiceClient OnAuthenticationRequired 的相关文章

  • 服务器事件客户端 - 摆脱 URI 末尾自动附加的字符串

    我是服务堆栈库的新手 并尝试使用服务器事件客户端 我正在使用的服务器有两个 URI 一个用于接收连接令牌 另一个用于使用前一调用中获取的令牌侦听搜索请求 我使用带有摘要身份验证的常规 JsonServiceClient 来获取令牌 如下所示
  • ServiceStack.Redis 无法读取传输 - BasicRedisClientManager

    当尝试通过 ServiceStack Redis 读取 Redis 列表时 我间歇性地收到以下错误 无法从传输连接读取数据 已建立的连接被主机中的软件中止 我想知道如何使用 ServiceStack 可靠地连接和池连接到 Redis 的整个
  • ServiceStack:从 Javascript 访问会话信息

    我正在使用 ServiceStack 和 AngularJs 创建 SPA 当用户登录时 我在 OnAuthenticated 方法中设置一些变量 public override void OnAuthenticated IServiceB
  • 将 C# 枚举定义序列化为 Json

    在 C 中给出以下内容 Flags public enum MyFlags None 0 First 1 lt lt 0 Second 1 lt lt 1 Third 1 lt lt 2 Fourth 1 lt lt 3 有没有现成的方法S
  • 如何在ServiceStack中使用Dapper

    目前 我使用 OrmLite 进行数据库操作 我也计划使用 Dapper ORM 但是谁能告诉我如何将 DapperORM 集成到 ServiceStack 中 我是否需要使用 Dapper 和插件来实现 IDbConnection 和 I
  • 如何在 ServiceStack 中进行身份验证后重定向

    我已经像这样重写了 CredentialsAuthProvider public override bool TryAuthenticate IServiceBase authService string userName string p
  • ServiceStack OrmLite 如何实现外键/相关属性的自动设置?

    我创建了以下示例来测试外键 到目前为止 它运行良好 我希望能够做的是使用我构建的这个框架来设置关系的属性 并让它在保存父级时保存子对象并自动设置主键和外键 DataManager 类公开 Connection public class Da
  • 将 List 转换为 List

    理解了这个概念翻译 https groups google com forum msg servicestack BF egdVm3M8 0DXLIeDoVJEJ 使用它来将 DataModel 类型转换为表示层的 DTO 类型 这样效果很
  • ServiceStack路由设计

    这3条路线一样吗 通常首选哪一种 Route todo id DELETE Route todo delete POST Route todo delete id GET public class DeleteTodo IReturnVoi
  • ServiceStack:DTO 中没有 IReturn 的 JsonServiceClient 使用

    我想做的是 var client new JsonServiceClient ServiceUrl var request new FooQuery Id 1 IEnumerable
  • Servicestack 服务器发送事件

    我刚刚开始搞乱我自己的 ServiceStack 服务器事件实现 在阅读了 wiki 部分并阅读了聊天应用程序的代码后 我开始创建自己的新应用程序mvc4项目并通过 nuGet 安装所有 ServiceStack 库 配置并创建后AppHo
  • 使用 MVC 控制器进行 ServiceStack 身份验证

    我已遵循 SocialBootstrapAPi for ServiceStack 中的示例 但我不明白重定向是如何连接的 当我进入未经身份验证的安全控制器时 我会被重定向回索引页面 我无法在我自己的应用程序中复制该行为 未找到此接线的位置
  • Redis serviceStack池化连接客户端

    我正在设计一个使用 Redis 作为数据库的 Web 服务 我想了解使用 Redis 与 StackService 客户端连接的最佳实践 重点是 我一直在阅读有关 Redis 的内容 并且发现与服务器交互的最佳方式是使用单个并发连接 问题是
  • ServiceStack Ormlite 和 RowVersion 支持

    在更新期间支持 sql server rowversion 的最简单方法是什么 我试过这个 db UpdateOnly u f gt new f Name f Description f Modified f ModifiedBy f gt
  • 记录 ServiceStack Web 服务 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用于记录基于 ServiceStack 的 Web 服务的选项有哪些 我不是在谈论单行字符串 我希望能够详细记录 可能很长 返回类型
  • ServiceStack AppHost 是单例吗?

    我一直在评估 ServiceStack 到目前为止 我已经被说服了 但我有一个要求 think将会破坏交易 我基本上需要多个 AppHost 派生的实例 第一个运行良好 但其余的则失败 因为 AppHostBase Instance 已被设
  • ServiceStack 与 MVC 并行运行

    我设法与 MVC4 并行运行 ServiceStack 但我仍然有一个小问题 希望有人可以帮助我解决这个问题 当通过 VS2012 执行调试会话时 一切都很完美 浏览器打开并且第一页加载良好 但是当刷新页面并尝试访问时http localh
  • 超时已过。 - 在ServiceStack服务中使用Db

    我正在使用DbServiceStack 服务中的属性来访问我的数据库 但我时不时地从 IIS 收到以下错误 Timeout expired The timeout period elapsed prior to obtaining a co
  • ServiceStack:异步/等待服务处理程序

    我读过一些涉及这个问题的问题 尽管其中许多已经有好几年了 如何在 ServiceStack API 中编写 Service 处理程序 使其成为 async await docs servicestack net 上没有任何文档提到 asyn
  • ServiceStack自定义用户身份验证

    有谁有一个关于如何按照本建议使用 int RefId 的实际示例question https stackoverflow com questions 11117469 how can i extend servicestack authen

随机推荐