c# - 在 Azure 移动应用服务客户端中,如何设置 userId 以便 loginAsync 工作?

标签 c# authentication xamarin.forms azure-mobile-services

我在 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/

相关文章:

xamarin.forms - 找不到 'MaxLength' 的属性、可绑定(bind)属性或事件,或者值和属性之间的类型不匹配

c# - 存储库应该公开实体对象吗?

c# - 无密码进入SQL Server

c# - 使用 Linq 获取每个客户昨天下的最后一个订单

python - 使用 urllib3 进行身份验证

xamarin.forms - 如何在 Xamarin.Forms 中允许 iOS 状态栏和 iPhone X 缺口

c# - 将 XAML 转换为 HTML 时出现“ namespace 像类型一样使用”错误

authentication - 浏览器不提示输入客户端证书

php - 使用操作系统用户名/密码在 PHP 中进行身份验证?

c# - XAML 绑定(bind)到标签