C# 如何在C中使用SQLite、MVVM进行授权#
我有2个独立的项目,注册和登录主窗口,我绑定到同一个SQLite文件。 用户注册的一切都很好,但现在我需要的登录将正常工作。如何从BD中提取用户,并使用MVVM检查该用户是否存在以及密码是否一致 我开始创建两个类C# 如何在C中使用SQLite、MVVM进行授权#,c#,wpf,sqlite,mvvm,C#,Wpf,Sqlite,Mvvm,我有2个独立的项目,注册和登录主窗口,我绑定到同一个SQLite文件。 用户注册的一切都很好,但现在我需要的登录将正常工作。如何从BD中提取用户,并使用MVVM检查该用户是否存在以及密码是否一致 我开始创建两个类 public class ServiceResult { public bool IsSucceed { get; set; } public string Error { get; set; } public ServiceResult() {
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 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");
}
}
}
private RelayCommand loginUser;
public RelayCommand LoginUser
{
get
{
return loginUser ??
(loginUser = new RelayCommand(() =>
{
var result = _authorizationService.Login(Login, hashing.Encrypt(Password));
}));
}
}
公共类RegisterViewModel:BaseViewModel
{
Hashing Hashing=新的Hashing();
应用程序上下文数据库;
私有字符串名称;
公共字符串名
{
get=>name;
设置
{
名称=值;
OnPropertyChanged(Name of(Name));
}
}
私有字符串lastName;
公共字符串姓氏
{
get=>lastName;
设置
{
lastName=值;
OnPropertyChanged(nameof(LastName));
}
}
私有字符串登录;
公共字符串登录
{
get=>login;
设置
{
登录=值;
OnPropertyChanged(登录名);
}
}
私有字符串密码;
公共字符串密码
{
获取{返回密码;}
设置
{
如果(密码!=值)
{
密码=值;
OnPropertyChanged(“密码”);
}
}
}
私人字符串邮件;
公用字符串邮件
{
get=>邮件;
设置
{
邮件=价值;
OnPropertyChanged(姓名(邮件));
}
}
公共ICommand命令{get;set;}
专用中继通信注册通信;
公共中继命令注册命令
{
得到
{
返回寄存器命令??
(registerCommand=新的RelayCommand(()=>
{
var\u user=newregisteruser(名称、姓氏、登录名、哈希、加密(密码)、邮件);
db.Users.Add(_user);
db.SaveChanges();
}));
}
}
公共ObservableCollection用户{get;set;}
公共注册服务模型()
{
db=新的ApplicationDbContext();
}
}
这是登录视图模型
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");
}
}
}
private RelayCommand loginUser;
public RelayCommand LoginUser
{
get
{
return loginUser ??
(loginUser = new RelayCommand(() =>
{
var result = _authorizationService.Login(Login, hashing.Encrypt(Password));
}));
}
}
ApplicationDbContext数据库;
i无数用户;
公共LoginViewModel(IViewFactory viewFactory,ICore core):基础(viewFactory)
{
db=新的ApplicationDbContext();
}
公共ICommand命令{get;set;}
私有字符串登录;
公共字符串登录
{
get=>login;
设置
{
登录=值;
RaisePropertyChanged(名称(登录));
}
}
私有字符串密码;
公共字符串密码
{
获取=>密码;
设置
{
密码=值;
RaisePropertyChanged(名称(密码));
}
}
专用RelayCommand addCommand;
公共RelayCommand AddCommand
{
得到
{
返回addCommand??
(addCommand=newrelayCommand(()=>
{
}));
}
}
公共IEnumerable用户
{
获取{返回用户;}
设置
{
用户=价值;
RaisePropertyChanged(“用户”);
}
}
}
我做了,很简单)
和登录视图模型
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");
}
}
}
private RelayCommand loginUser;
public RelayCommand LoginUser
{
get
{
return loginUser ??
(loginUser = new RelayCommand(() =>
{
var result = _authorizationService.Login(Login, hashing.Encrypt(Password));
}));
}
}