Пользовательский сеттер для модели С#
Я не знаю, как создать пользовательский сеттер для модели данных С#. Сценарий довольно прост, я хочу, чтобы мой пароль был автоматически зашифрован с помощью функции SHA256. Функция SHA256 работает очень хорошо (раньше я использовал в проектах gazillion).
Я пробовал пару вещей, но когда я запускаю update-database
кажется, что она что-то рекурсивно решает и моя Visual Studio зависает (не отправляйте ошибку). Пожалуйста, помогите мне понять, как сделать пароли по умолчанию в модели.
Код с тем, что я уже пробовал
public class Administrator
{
public int ID { get; set; }
[Required]
public string Username { get; set; }
[Required]
public string Password
{
get
{
return this.Password;
}
set
{
// All this code is crashing Visual Studio
// value = Infrastructure.Encryption.SHA256(value);
// Password = Infrastructure.Encryption.SHA256(value);
// this.Password = Infrastructure.Encryption.SHA256(value);
}
}
}
семя
context.Administrators.AddOrUpdate(x => x.Username, new Administrator { Username = "admin", Password = "123" });
Ответы
Ответ 1
Вам нужно использовать переменную private member в качестве поля поддержки. это позволяет хранить значение отдельно и управлять им в сеттере.
Хорошая информация здесь
public class Administrator
{
public int ID { get; set; }
[Required]
public string Username { get; set; }
private string _password;
[Required]
public string Password
{
get
{
return this._password;
}
set
{
_password = Infrastructure.Encryption.SHA256(value);
}
}
}
Ответ 2
Получите и установите, что вы используете, на самом деле создайте методы, называемые get_Password()
и set_Password(password)
.
Вы хотите, чтобы фактический пароль хранился в частной переменной. Таким образом, просто наличие частной переменной, которая возвращается и обновляется этими "методами", - это путь.
public class Administrator
{
public int ID { get; set; }
[Required]
public string Username { get; set; }
[Required]
private string password;
public string Password
{
get
{
return this.password;
}
set
{
this.password = Infrastructure.Encryption.SHA256(value);
}
}
}