如何使用简单成员资格在MVC 4应用程序中更改用户名和密码

dlght

我正在使用简单的成员资格提供程序构建MVC 4 Web应用程序,并且具有管理权限,可以在其中编辑用户名和密码。当我只编辑用户名或密码时,可以,但是当我尝试同时编辑用户名和密码时当我尝试使用新用户名登录时,尽管数据库中的记录已更改,但用户列表中显示的UserProfiles用户名是旧用户名。这是一个代码示例:

[HttpPost]
    public ActionResult EditUser(RegisterUserModel model, FormCollection form)
    {
        if (ModelState.IsValid)
        {
            var oldUserName = form["userHidden"];
            var newUserName = model.UserName;
            bool isOldPassword = Membership.ValidateUser(oldUserName , model.Password);

            if (!isOldPassword)
            {
                var token = WebSecurity.GeneratePasswordResetToken(oldUserName );

                try
                {
                    //Reset password using the reset token and the new password
                    WebSecurity.ResetPassword(token, model.Password);

                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", String.Format("{0} Exception caught.", e));
                }
            }

            if (newUserName != null && oldUserName != null)
            {
                if (newUserName.ToLower() != oldUserName.ToLower())
                {
                    myRepository.ChangeUserName(oldUserName, newUserName);
                    myRepository.Save();
                }
            }

            return RedirectToAction("Users", "Administration");
        }

        ModelState.AddModelError("", "Please enter correct username and password.");
        return View(model);
    }

这是我的ChangeUserName方法:

public void ChangeUserName(string oldUserName, string newUserName)
    {
        var userToUpdate = (from user
                            in context.Users
                            where user.Username == oldUserName
                            select user).FirstOrDefault();

        if (userToUpdate != null)
        {
            var updatedUser = new Users();
            updatedUser.UserId = userToUpdate.UserId;
            updatedUser.UserName = newUserName;

            context.Entry(userToUpdate).CurrentValues.SetValues(updatedUser);
        }
    }

我已经像这样扩展了我的会员资格:

public class ExtendMembership
{
    private static IMyRepository myRepository= new MyRepository(new MyEntities());

    public static bool ValidateUser(string username, string password, string companyName)
    {
        int companyId = myRepository.GetCompanyName(companyName);

        int? userId = companyId == 0 ? null : GetUserId(username, companyId);

        if (userId.HasValue && userId.Value != 0)
        {
            var userKeyToCompany = username + "@" + companyName.ToLower();
            return WebSecurity.Login(userKeyToCompany , password);
        }
        else
        {
            return false;
        }
    }

    private static int? GetUserId(string username, int companyId)
    {
        var userId = (from users
                      in myRepository.GetUsers()
                      where (users.UserName.ToLower() == username.ToLower()) && (users.CompanyId == companyId)
                      select users.UserId).FirstOrDefault();
        return userId;
    }
}

GetUserId方法获取公司的用户ID

dlght

事实证明,我的GetUserId方法应该在MyRepository中在更改后的上下文中实现,并且更改密码和更改用户名操作也应分开。一切都解决了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中验证Windows应用程序的咸密码和用户名?

来自分类Dev

如何在Mvc 4 Web API中接收json值(例如:从Android应用程序以json形式发送的用户名和密码)

来自分类Dev

如何通过用户名和密码保护在Docker容器中运行的Web应用程序?

来自分类Dev

asp.net mvc Web应用程序提示用户名和密码

来自分类Dev

如何在MySQL中使用MVC成员资格提供程序?

来自分类Dev

安卓 关闭应用程序后如何保存用户名和密码?

来自分类Dev

使用用户名和密码从WPF应用程序进行GitHub身份验证

来自分类Dev

如何在servlet应用程序中更改用户的tomcat密码?

来自分类Dev

如何在Maven中更改应用程序引擎的用户名/凭证?

来自分类Dev

我正在尝试使用包含Java扫描程序的if / else语句来处理用户名和密码应用程序

来自分类Dev

如何使我的Spring Boot应用程序使用给定的用户名和密码登录到keycloak?

来自分类Dev

使用来自Java应用程序的用户名和密码身份验证发布推文

来自分类Dev

使用Node.js Web应用程序中的用户名和密码在Azure AD上进行身份验证

来自分类Dev

如何在Windows 7中更改用户名?

来自分类Dev

您如何在Manjaro中更改用户名?

来自分类Dev

如何在MediaWiki中更改用户名?

来自分类Dev

如何在 Konsole 中更改用户名颜色

来自分类Dev

如何在 Ubuntu 18.04 中更改用户名?

来自分类Dev

如何更改用户名

来自分类Dev

如何更改用户名域

来自分类Dev

如何将我的应用程序中的用户名和密码详细信息存储到我的数据库以及如何将我的应用程序与我的数据库连接?

来自分类Dev

如何使用护照本地猫鼬更改用户名密码

来自分类Dev

即使在用户清除用户名和密码文本框并点击提交后,ASP 应用程序仍使用保存的凭据

来自分类Dev

如何更改MySQL的用户名和密码?

来自分类Dev

我应该使用环境变量还是 module.exports 作为 Heroku 上的小型个人应用程序的用户名和密码?

来自分类Dev

如何使用C#桌面应用程序登录到ASP.NET加密的用户名/密码

来自分类Dev

如何在 python 中的 Twisted 客户端服务器应用程序中添加身份验证(用户名/密码)?

来自分类Dev

如何保护Sqoop中的密码和用户名?

来自分类Dev

iOS如何从plist中查询用户名和密码

Related 相关文章

  1. 1

    如何在C#中验证Windows应用程序的咸密码和用户名?

  2. 2

    如何在Mvc 4 Web API中接收json值(例如:从Android应用程序以json形式发送的用户名和密码)

  3. 3

    如何通过用户名和密码保护在Docker容器中运行的Web应用程序?

  4. 4

    asp.net mvc Web应用程序提示用户名和密码

  5. 5

    如何在MySQL中使用MVC成员资格提供程序?

  6. 6

    安卓 关闭应用程序后如何保存用户名和密码?

  7. 7

    使用用户名和密码从WPF应用程序进行GitHub身份验证

  8. 8

    如何在servlet应用程序中更改用户的tomcat密码?

  9. 9

    如何在Maven中更改应用程序引擎的用户名/凭证?

  10. 10

    我正在尝试使用包含Java扫描程序的if / else语句来处理用户名和密码应用程序

  11. 11

    如何使我的Spring Boot应用程序使用给定的用户名和密码登录到keycloak?

  12. 12

    使用来自Java应用程序的用户名和密码身份验证发布推文

  13. 13

    使用Node.js Web应用程序中的用户名和密码在Azure AD上进行身份验证

  14. 14

    如何在Windows 7中更改用户名?

  15. 15

    您如何在Manjaro中更改用户名?

  16. 16

    如何在MediaWiki中更改用户名?

  17. 17

    如何在 Konsole 中更改用户名颜色

  18. 18

    如何在 Ubuntu 18.04 中更改用户名?

  19. 19

    如何更改用户名

  20. 20

    如何更改用户名域

  21. 21

    如何将我的应用程序中的用户名和密码详细信息存储到我的数据库以及如何将我的应用程序与我的数据库连接?

  22. 22

    如何使用护照本地猫鼬更改用户名密码

  23. 23

    即使在用户清除用户名和密码文本框并点击提交后,ASP 应用程序仍使用保存的凭据

  24. 24

    如何更改MySQL的用户名和密码?

  25. 25

    我应该使用环境变量还是 module.exports 作为 Heroku 上的小型个人应用程序的用户名和密码?

  26. 26

    如何使用C#桌面应用程序登录到ASP.NET加密的用户名/密码

  27. 27

    如何在 python 中的 Twisted 客户端服务器应用程序中添加身份验证(用户名/密码)?

  28. 28

    如何保护Sqoop中的密码和用户名?

  29. 29

    iOS如何从plist中查询用户名和密码

热门标签

归档