Azure移动服务具有持久身份验证

时间:2013-11-02 10:03:30

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

我正在尝试在Windows Phone应用中使用Windows Azure移动服务实现身份验证。我已经按照官方教程和身份验证工作正常。问题是,只要应用程序关闭并再次启动,用户就必须输入用户名和密码。由于服务仅使用身份验证令牌,因此登录页面中的“记住我”选项不太可能有效。

Windows Azure的官方文档显示使用Live SDK与Microsoft帐户进行单点登录的可能性。 Live SDK以string的形式提供身份验证令牌。但是,即使这个令牌在大约24小时内到期。此外,这仅限于Microsoft帐户。

如果我想缓存用户身份并启用自动登录,我有什么可能?我已经阅读了文章here。一旦令牌过期,用户仍需要再次登录。我见过要求用户只登录一次的应用程序!

1 个答案:

答案 0 :(得分:2)

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

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);
}

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