【发布时间】:2021-02-21 08:37:45
【问题描述】:
我有 2 个独立的项目,注册和登录主窗口,我绑定到同一个 SQLite 文件。 用户注册一切都很好,但现在我需要登录能够正常工作。如何从BD中提取用户并使用MVVM检查该用户是否存在以及密码是否一致?
我开始创建 2 个类
public class ServiceResult
{
public bool IsSucceed { get; set; }
public string Error { get; set; }
public ServiceResult()
{
IsSucceed = true;
}
public ServiceResult(string error)
{
IsSucceed = false;
Error = error;
}
}
和
public class AuthorizationService
{
public ServiceResult Login(string login,string password)
{
ApplicationDbContext db= new ApplicationDbContext();
return new ServiceResult();
}
}
我的注册视图模型
public class RegisterViewModel : BaseViewModel
{
Hashing hashing = new Hashing();
ApplicationDbContext db;
private string name;
public string Name
{
get => name;
set
{
name = value;
OnPropertyChanged(nameof(Name));
}
}
private string lastName;
public string LastName
{
get => lastName;
set
{
lastName = value;
OnPropertyChanged(nameof(LastName));
}
}
private string login;
public string Login
{
get => login;
set
{
login = value;
OnPropertyChanged(nameof(Login));
}
}
private string password;
public string Password
{
get { return password; }
set
{
if (password != value)
{
password = value;
OnPropertyChanged("Password");
}
}
}
private string mail;
public string Mail
{
get => mail;
set
{
mail = value;
OnPropertyChanged(nameof(Mail));
}
}
public ICommand Command { get; set; }
private RelayCommand registerCommand;
public RelayCommand RegisterCommand
{
get
{
return registerCommand ??
(registerCommand = new RelayCommand(() =>
{
var _user = new RegisterUser(Name, LastName, Login, hashing.Encrypt(Password), Mail);
db.Users.Add(_user);
db.SaveChanges();
}));
}
}
public ObservableCollection<User> Users { get; set; }
public RegisterViewModel()
{
db = new ApplicationDbContext();
}
}
这是登录视图模型
ApplicationDbContext db;
IEnumerable<User> users;
public LoginViewModel(IViewFactory viewFactory, ICore core) : base(viewFactory)
{
db = new ApplicationDbContext();
}
public ICommand Command { get; set; }
private string login;
public string Login
{
get => login;
set
{
login = value;
RaisePropertyChanged(nameof(Login));
}
}
private string password;
public string Password
{
get => password;
set
{
password = value;
RaisePropertyChanged(nameof(Password));
}
}
private RelayCommand addCommand;
public RelayCommand AddCommand
{
get
{
return addCommand ??
(addCommand = new RelayCommand(() =>
{
}));
}
}
public IEnumerable<User> Users
{
get { return users; }
set
{
users = value;
RaisePropertyChanged("Users");
}
}
}
【问题讨论】: