MVC 5 - 更改模拟账户的密码

时间:2016-03-07 17:58:03

标签: asp.net asp.net-mvc

我有一个使用asp.net安全性的MVC 5演示应用程序。在该应用程序中,我有75个以上的用户帐户。

发布演示的人员离开了,因此我希望能够重置所有帐户的所有密码,而无需将每个帐户的电子邮件更改为我的个人电子邮件,并在其中单独执行链接将发送到我的个人电子邮件。

有没有办法可以输入用户名和新密码,并使用内置的IdentityUser功能重置密码?

2 个答案:

答案 0 :(得分:1)

假设您的应用程序采用标准MVC5格式,请将此ViewResult放入帐户控制器:

[AllowAnonymous]
public async Task<ViewResult> ResetAllPasswords()
{
    // Get a list of all Users
    List<ApplicationUser> allUsers = await db.Users.ToListAsync();
    // NOTE: make sure this password complies with the password requirements set up in Identity.Config
    string newPassword = "YourNewPassword!";
    int passwordChangeSuccess = 0;
    int countUsers = 0;
    // Loop through the list of Users
    foreach (var user in allUsers)
    {
        // Get the User
        ApplicationUser thisUser = await UserManager.FindByNameAsync(user.UserName);
        // Generate a password reset token
        string token = await UserManager.GeneratePasswordResetTokenAsync(thisUser.Id);
        // Change the password, using the reset token
        IdentityResult result = await UserManager.ResetPasswordAsync(thisUser.Id, token, newPassword);

        // Record results (extend to taste)
        if (result.Succeeded)
        {
            passwordChangeSuccess++;
        }
        countUsers++;
    }

    ViewBag.CountUsers = countUsers;
    ViewBag.PasswordSuccess = passwordChangeSuccess;

    return View();
}

并使用ViewBag.CountUsers和ViewBag.PasswordSuccess设置一个新视图以检查结果。

然后在Account控制器中设置一个指向ResetAllPasswords的ActionLink,然后按下去。

显然格式化可以改变(也许是一个带有确认的表单,可能带有输入字段来指定密码..),但基本的控制器代码应该是好的。请注意[AllowAnonymous]属性仅用于一次性访问 - 不是一个好主意,除了测试之外还有其他功能!

这应该将所有用户重置为代码中指定的相同密码。

答案 1 :(得分:0)

是在帐户控制器中,只需转到忘记密码功能并稍微更改该代码,首先用户搜索电子邮件ID,然后系统向该用户发送邮件。 只需写下用户将邮件发送到您的特定电子邮件ID的代码,然后您可以在您的帐户中获取该链接,然后单击该链接并重置密码