Как создать SecurityStamp для AspNetUser в ASP.NET MVC 5
когда я создаю пользователя действием регистрации, когда приложение работает, пользователь приложения получает SecurityStamp. Когда я добавляю пользователя:
if (!context.Users.Any()) {
System.Diagnostics.Debug.WriteLine("INSIDE");
var hasher = new PasswordHasher();
try {
var users = new List<ApplicationUser> {
new ApplicationUser{PasswordHash = hasher.HashPassword("TestPass44!"), Email = "informatyka4444@wp.pl", UserName = "informatyka4444@wp.pl"},
new ApplicationUser{PasswordHash = hasher.HashPassword("TestPass44!"), Email = "informatyka4445@wp.pl", UserName = "informatyka4445@wp.pl"}
};
users.ForEach(user => context.Users.AddOrUpdate(user));
context.SaveChanges();
} catch (DbEntityValidationException e) {
System.Diagnostics.Debug.WriteLine("EXC: ");
foreach (DbEntityValidationResult result in e.EntityValidationErrors) {
foreach (DbValidationError error in result.ValidationErrors) {
System.Diagnostics.Debug.WriteLine(error.ErrorMessage);
}
}
}
}
пользователь не получает штамп безопасности:
и затем, когда я хочу войти в систему, я получаю:
вопрос: как создать SecurityStamp
для пользователей?
1 ответов
печать безопасности может быть все, что вы хотите. Часто ошибочно полагать, что это временная метка, но это не так. Он будет переопределен ASP.NET Identity, если что-то изменится в сущности пользователя. Если вы работаете над контекстом напрямую, лучший способ-создать новый Guid и использовать его в качестве штампа. Вот простой пример:
var users = new List<ApplicationUser>
{
new ApplicationUser
{
PasswordHash = hasher.HashPassword("TestPass44!"),
Email = "informatyka4444@wp.pl",
UserName = "informatyka4444@wp.pl",
SecurityStamp = Guid.NewGuid().ToString()
},
new ApplicationUser
{
PasswordHash = hasher.HashPassword("TestPass44!"),
Email = "informatyka4445@wp.pl",
UserName = "informatyka4445@wp.pl",
SecurityStamp = Guid.NewGuid().ToString()
}
};