繁体   English   中英

在WPF中登录验证后导航到UserControl?

[英]Navigate to UserControl after LoginVerification in WPF?

我有一个登录用户控件和一个ModuleHomeScreen用户控件。

我的登录UserControl有一个用户名和密码文本框以及一个LoginButton。 当用户单击LoginButton时,将从数据库验证其凭据; 然后必须将他导航到ModuleHomeScreen UserControl。

UserCredentials验证工作正常。 MainWindow有一个NavigationFrame,我可以在其中切换UserControl。

现在我的问题是:在不填写用户凭据的情况下,当用户单击登录按钮时,他仍会导航到仪表板UserControl。 导航代码甚至还有问题!

如何首先验证登录凭据,如果成功,则导航到其他UserControl?

这是我的代码附件:

Login.xaml

    public void loginButton_Click(object sender, EventArgs e)
    {
        if (LoginUserName.Text != "" && LoginPassword.Password != "")
        {
            NpgsqlConnection con = new NpgsqlConnection("Server=localhost;Port=1234;UserID=postgres;Password=root;Database=postgres");
            con.Open();
            String username = LoginUserName.Text.Trim();
            String encPassword = TripleDESCrypto.Encrypt(LoginPassword.Password.Trim(),true);
            String query = "SELECT * FROM login where username= '" + username + "' and password = '" + encPassword + "';";
            NpgsqlCommand cmd = new NpgsqlCommand(query, con);
            NpgsqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
               // ServiceContainer.GetService<INavigationService>().Navigate("ModuleHomeScreen", null, this);
                LoginErrorMessage.Text = "Login Successfull";
                MainWindow appWindow = new MainWindow();
                ModuleHomeScreen appScreen = new ModuleHomeScreen();
                appWindow.MainWindowNavigationFrame.Navigate(appScreen,null);
            }
            else
            {
                LoginErrorMessage.Text = "Invalid Login Credentials.";
            }
        }
        else
        {
            LoginErrorMessage.Text = "Please enter all fields !";
        }
    }

尝试这个 :

    public void loginButton_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(LoginUserName.Text))
        {
            ////Password could be empty for some user's
            if (LoginPassword.Password == null)
                LoginPassword.Password = string.Empty;

            NpgsqlConnection con = new NpgsqlConnection("Server=localhost;Port=1234;UserID=postgres;Password=root;Database=postgres");
            con.Open();
            String username = LoginUserName.Text.Trim();
            String encPassword = TripleDESCrypto.Encrypt(LoginPassword.Password.Trim(), true);
            String query = "SELECT count(*) FROM login where username= '" + username + "' and password = '" + encPassword + "';";
            NpgsqlCommand cmd = new NpgsqlCommand(query, con);
            int? dr = cmd.ExecuteScalar() as int?;
            if (dr.HasValue && dr.Value > 0)
            {
                // ServiceContainer.GetService<INavigationService>().Navigate("ModuleHomeScreen", null, this);
                LoginErrorMessage.Text = "Login Successfull";
                MainWindow appWindow = new MainWindow();
                ModuleHomeScreen appScreen = new ModuleHomeScreen();
                appWindow.MainWindowNavigationFrame.Navigate(appScreen, null);
            }
            else
            {
                LoginErrorMessage.Text = "Invalid Login Credentials.";
            }
        }
        else
        {
            LoginErrorMessage.Text = "Please enter user name !";
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM