I'm using ASP.NET MVC5 Identity and want users to be able to reset their password just by entering their email.
There is only a fixed number of users and they are already set up, including an email adress. If a user comes to the site, they may click the link "Send my Password" which should send the valid password to the depositted email.
I guess there is no easy way for the admin to receive the current password, so what I thought was necessary is to reset the password and then create the mail:
[HttpPost] [AllowAnonymous] public JsonResult RecoverPassword(string usersEmail) { try { //"db" is my Context.. var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db)); var user = db.Users.Where(x => x.Email == usersEmail).First(); Random rnd = new Random(); int rndNumber = rnd.Next(100, 999); string Password = "MostSecurePasswordInTheWorld" + rndNumber + "."; um.RemovePassword(user.Id); um.AddPassword(user.Id, Password); db.SaveChanges(); //send mail ... This might have some weaknesses (everybody who knows a valid email of some user might reset it, the password is sent in the mail, the auto-generated password is weak etc.). But the biggest weakness is .. the password just does not get reset.
I don't encounter any errors in debugging, though, and am kind of clueless. What might be the problem here? Is the "user" I'm getting from
var user = db.Users.Where(x => x.Email == usersEmail).First(); not the user-object needed here?