我正在尝试使用登录页面为 WP8 构建应用程序。我想保存用户登录状态,以便最终用户不必重新输入他/她的凭据,我的应用程序是嵌入在 webbrowser 控件中的 HTML 页面。有人可以帮我保存登录状态吗?
1 回答
首先,如果您尝试登录的网站不是您的,那么您所要求的就无法完成。
现在假设您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)); } }
并为此完成覆盖OnNavigatedTo
PageAfterLoginPage.xaml 的方法并添加以下代码:
NavigationService.RemoveBackEntry();
最后一部分将从堆栈中删除登录页面,以便当用户单击后退按钮时不会再次导航到该屏幕。