0

我正在创建一个登录页面以使用户能够使用WPF MVVM应用程序。到目前为止,我正在使用Entity Framework model,连接到SQL database.

我有一张表,其中包含一些用户详细信息,例如用户名、密码、确认密码电子邮件和用户角色。

到目前为止,我已经创建了一个视图,该视图已经bound访问了我的视图模型中的某些属性(用户名和密码)。

我还有一个注册页面,允许用户拥有用户凭据(也有一些验证,所以只能有 1 个用户有名字,不能重复)。

显然,与您相比,ASP.NET您可以使用身份验证并以这种方式创建用户。我一直在关注一些如何创建登录页面的各种链接,但它们都不是我想要的。

但是,我不太确定我在做什么是正确的,从某种意义上说,我如何匹配数据库中的结果以允许用户登录?

这就是我到目前为止所做的;

public void CheckLogin()
{
     var user = context.Users.Where(i => i.UserID == this.UserID).FirstOrDefault();

     if (user != null )
     {
         MessageBox.Show("Unable to Login, incorrect credentials.");

     }
     else if (this.Username == user.Username || this.Password == user.Password)
     {
         MessageBox.Show("Successfully Logged in, " + user.Username + "");
     }
     else
     {
         MessageBox.Show("Unable to Login, incorrect credentials.");
     }
}

private ICommand showLoginCommand;
public ICommand ShowLoginCommand
{
    get
    {
        if (this.showLoginCommand == null)
        {
            this.showLoginCommand = new CommandBase(i => this.CheckLogin(), null);
        }
        return this.showLoginCommand;
    }
}

XAML;

<TextBox Name="txtUserName" HorizontalAlignment="Left" Style="{StaticResource myErrorTemplate}"
                 Text="{Binding Username, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True, Mode=TwoWay}"/>

<PasswordBox HorizontalAlignment="Left" Name="txtPassword"
               behavior:PasswordBoxAssistant.Attach="True" 
               behavior:PasswordBoxAssistant.Password="{Binding Password, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True, Mode=TwoWay}"/>

<Button Name="btnLogin" IsDefault="True" 
                    Command="{Binding ShowLoginCommand}"/>

但是,当输入详细信息时,它似乎不起作用。谁能帮我创建一个 EF 语句来检查数据库中的用户并将其与从登录页面输入的用户名和密码相匹配?

先谢谢了。

4

1 回答 1

0

我认为代码中的 if 语句有些东西。当我查看代码时,它应该更像是:

if (user == null)
 {
     MessageBox.Show("Unable to Login, incorrect credentials.");

 }
 else if (this.Username == user.Username && this.Password == user.Password)
 {
     MessageBox.Show("Successfully Logged in, " + user.Username + "");
 }
 else
 {
     MessageBox.Show("Unable to Login, incorrect credentials.");
 }

如果用户不存在,则显示消息,并且用户名密码必须相同。

于 2013-04-17T12:30:58.710 回答