Comment créer SecurityStamp pour AspNetUser dans ASP.NET MVC 5

quand je crée user par action Register quand l'application est en cours d'exécution l'utilisateur de l'application obtient SecurityStamp. Quand j'ai ajouter un utilisateur:

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);
                        }
                    }

                }
            }

l'utilisateur n'obtient pas le sceau de sécurité:

enter image description here

et puis quand je veux connecter j'obtiens:

enter image description here

Question: Comment générer SecurityStamp pour l'utilisateur?

20
demandé sur Yoda 2014-08-18 06:18:51

1 réponses

le tampon de sécurité peut être tout ce que vous voulez. Il est souvent erroné d'être une estampille temporelle, mais ce n'est pas le cas. Il sera remplacé par ASP.NET identité si quelque chose change sur l'entité utilisateur. Si vous travaillez sur le contexte directement la meilleure façon serait de générer un nouveau Guid et l'utiliser comme le timbre. Voici un exemple simple:

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()
                         }
                };
34
répondu Horizon_Net 2015-03-23 17:35:37