c# - 具有持久身份验证的 Azure 移动服务

标签 c# authentication azure windows-phone-8 azure-mobile-services

我正在尝试在我的 Windows Phone 应用程序中使用 Windows Azure 移动服务实现身份验证。我按照官方教程进行操作,认证工作正常。问题是,每当应用程序关闭并再次启动时,用户都必须输入用户名和密码。由于服务仅使用身份验证 token ,因此登录页面上的“记住我”选项不太可能起作用。

Windows Azure 的官方文档显示了使用 Live SDK 通过 Microsoft 帐户进行单点登录的可能性。 Live SDK 提供字符串 形式的身份验证 token 。然而,即使这个 token 也会在大约 24 小时内过期。此外,这仅限于 Microsoft 帐户。

如果我想缓存用户身份并启用自动登录,我可以做什么?我已经浏览过这篇文章here 。一旦 token 过期,用户仍然需要重新登录。我见过需要用户仅登录一次的应用程序!

最佳答案

如果您使用 Live SDK,用户只需登录一次。您每次都会调用 Live SDK,但 SDK 本身会为您管理缓存 token ,并在需要时向服务器请求它(在大多数情况下无需用户干预) - 请参阅示例代码下面。

var liveIdClient = new LiveAuthClient(clientId);
var liveLoginResult = await liveIdClient.LoginAsync("wl.basic wl.signin".Split());
if (liveLoginResult.Status == LiveConnectSessionStatus.Connected) {
    var token = new JObject();
    token.Add("authenticationToken", liveLoginResult.Session.AuthenticationToken);
    var user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount, token);
}

请注意,如果您在模拟器上运行应用程序,则关闭模拟器后登录信息可能会丢失(我过去见过这种情况)。但是,当在真实设备上运行时,或者如果您长时间打开模拟器),您应该只需要登录一次。

关于c# - 具有持久身份验证的 Azure 移动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19740814/

相关文章:

C# Winform Webbrowser 在文档文本更新后不更新

c# - 线程信号基础

javascript - PHP session 与 AJAX 不持久

asp.net-mvc - 如何在 .Net Core 2.0 的 Razor 页面中检查用户是否通过身份验证

node.js - 使用身份验证用户名/密码nodejs连接到托管redis

azure - 在 Azure 服务总线实体名称中使用斜杠字符

c# - 用另一个用户替换当前运行 EXE 的 Windows 用户

c# - MVVM 中的子窗口

azure - 如何设置 systemd 切片的打开文件限制

c# - Azure Web 作业中的 LocalReport 呈现