如何防止用户登录后返回登录页面(Xamarin表单)

如何防止用户登录后返回登录页面(Xamarin表单),xamarin,xamarin.forms,xamarin.ios,xamarin.android,Xamarin,Xamarin.forms,Xamarin.ios,Xamarin.android,我有一个登录页面,用户在其中输入用户名和密码,然后用户被重定向到他的帐户页面,但当我按下后退按钮时,它会将我带回登录页面。我如何防止这种情况发生。 代码段: 公共登录() { 如果(App.IsUserLoggedIn==false) { 初始化组件(); } 其他的 { PushAsync(新的NavigationPage(新的LoginIndexPage()); } } 已单击私有异步无效登录按钮(对象发送方,事件参数e) { var user=new Xcore.Users.csUser

我有一个登录页面,用户在其中输入用户名和密码,然后用户被重定向到他的帐户页面,但当我按下后退按钮时,它会将我带回登录页面。我如何防止这种情况发生。 代码段:

公共登录()
{
如果(App.IsUserLoggedIn==false)
{
初始化组件();
}
其他的
{
PushAsync(新的NavigationPage(新的LoginIndexPage());
}
}
已单击私有异步无效登录按钮(对象发送方,事件参数e)
{
var user=new Xcore.Users.csUser
{
RefNo=refereansnoentry.Text,
Username=usernamentry.Text,
Password=passwordEntry.Text
};
var isValid=IsCorrectLogin(用户);
如果(有效)
{
App.IsUserLoggedIn=true;
等待Navigation.PushAsync(新的NavigationPage(新的LoginIndexPage());
}
其他的
{
淋浴错误文本=“*Hatalıgiriş”;
passwordEntry.Text=string.Empty;
usernameEntry.Text=string.Empty;
refereansnoentry.Text=string.Empty;
}
}
私有bool IsCorrectLogin(Xcore.Users.csUser)
{
返回user.RefNo==Xcore.Users.RegInfo.RefNo
&&user.Username==Xcore.Users.RegInfo.Username
&&user.Password==Xcore.Users.RegInfo.Password;
}
公共登录索引页()
{
如果(App.IsUserLoggedIn==true)
{
初始化组件();
}
其他的
{
PushAsync(新导航页面(新登录());
}
}
出现时受保护的覆盖无效()
{
base.OnAppearing();
showuserName.Text=Xcore.Users.RegInfo.Username;
}

当我登录时,它将进入LoginIndex页面。

尝试在LoginIndex页面中使用此代码

protected override bool OnBackButtonPressed()
    {
        return true; // true prevent navigation back and false to allow

    }

通常在这种情况下,我会从导航堆栈中删除登录页面

我相信有一种导航方法,比如Navigation.RemovePage(第页),当你离开登录页面时。这样,您的后堆栈和功能保持不变,但不会返回登录页面,因为它已从堆栈中删除


但是,您必须记住的是,如果登录是根页面,那么在调用pop()时,堆栈中仍然需要有一个页面。

与App Pack提到的类似,导航堆栈中不应该有LoginPage。与其尝试删除它,不如将下一页设置为根页

与其将下一页推到堆栈上,不如将其设置为:

Application.Current.MainPage=


此外,我不会在页面的构造函数中导航到页面。这不是一个好的做法。

是的,我能做到。但这不是一个很好的解决方案。我必须使用会话变量。但是我怎么用呢?看看这个answear: