我在 Xamarin.Forms 应用程序中实现自定义身份验证,该应用程序在 Azure 中使用 .NET 后端,一些 Controller 标有 [Authorize]。我已经按照大量博客和文章中的说明进行操作,但仍然不清楚如何使未经授权的 TableController 调用触发登录屏幕,或者如何访问相同的身份验证子系统 loginAsync 设置 userId 或 token 信息,以便多个MobileServiceClient 的实例保留最新的 userId 和 MobileServiceAuthenticationToken 值。如何正确触发登录页面并在 MobileServiceClient 与其他 OOTB 提供商访问的同一身份验证子系统中更新用户 ID/ token ?
最佳答案
当您的移动应用程序尝试访问标有 [Authorize] 的后端但未提供授权 header (从技术上讲,是具有有效 JWT 的 X-ZUMO-AUTH header )时,该服务返回 401 Unauthenticated。有多种方法可以捕获此问题,但您的操作将失败(并且在 Xamarin.Forms 应用程序中,这将导致 MobileServiceInvalidOperationException)。您需要处理这种情况,调用 loginAsync(),然后重试该操作。
您不应该有多个 MobileServiceClients - 您应该在全局范围内有一个(使用 DI 注入(inject)它或只是在 App 上下文中使其成为静态)。 MobileServiceUser 将由生成的所有表使用。
关于c# - 在 Azure 移动应用服务客户端中,如何设置 userId 以便 loginAsync 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36381318/