1

我正在尝试使用登录页面为 WP8 构建应用程序。我想保存用户登录状态,以便最终用户不必重新输入他/她的凭据,我的应用程序是嵌入在 webbrowser 控件中的 HTML 页面。有人可以帮我保存登录状态吗?

4

1 回答 1

0

首先,如果您尝试登录的网站不是您的,那么您所要求的就无法完成。

现在假设您WebBrowser在 XAML 代码中使用 a 并且您登录的网站是您的,假设您有一个登录成功方法:

在那里你必须调用这个代码:

window.external.notify("LogInSuccess");

那么你WebBrowser应该是这样的:

<phone:WebBrowser HorizontalAlignment="Stretch" Name="webBrowserControl" VerticalAlignment="Stretch" IsScriptEnabled="True" ScriptNotify="JavaScriptNotify"/>

在 .cs 文件中调用的方法实际上应该将成功值存储到隔离存储中,每次打开登录页面时都会检查该值:

void JavaScriptNotify(Object sender, NotifyEventArgs notifyArgs)
{
    // Check if the value is correct:
    if (notifyArgs.Value.Equals("LogInSuccess"))
    {
        // Save State to Isolated Storage
        var settings = IsolatedStorageSettings.ApplicationSettings;
        settings.Add("loginStatus ", "success");
    }
}

最后,您应该将登录页面的构造方法重写为以下内容:

public LoginPage() { var loginStatus = settings["loginStatus"].ToString(); if (loginStatus.Equals(success)) { NavigationService.Navigate(new Uri("/PageAfterLoginPage.xaml, UriKind.Relative)); } }

并为此完成覆盖OnNavigatedToPageAfterLoginPage.xaml 的方法并添加以下代码:

NavigationService.RemoveBackEntry();

最后一部分将从堆栈中删除登录页面,以便当用户单击后退按钮时不会再次导航到该屏幕。

于 2013-09-04T21:52:20.927 回答