ASP.NET 用户名更改

标签 asp.net asp.net-membership

我有一个使用 ASP.net 成员(member)资格提供程序的 asp.net 站点。数据库中的每个评论、条目等均由用户 ID 跟踪。

由于MS不提供更改用户名的方法,我在数据库的“users”表中找到了userNAME,并且只有1个地方出现了用户名。

我的问题是,

提供允许用户编辑自己的用户名的“编辑个人资料”页面是否安全。当然,我会通过直接更改数据库中的“用户名”值来在后台处理此更改。

这有什么缺点吗?我创建并修改了一些测试帐户,似乎没问题,我只是想知道在将其投入生产之前是否有任何已知的负面影响。

最佳答案

cptScarlet 的链接很好,但是如果不需要,我鄙视使用存储过程,并且只要有可能我就倾向于使用 Entity Framework 。以下是我使用 EF 4.0 和 .NET 4.0 更改用户名的操作:

  1. 右键单击项目 -> 添加新项 -> ADO.NET 实体数据模型
  2. 为其指定一个正确的名称,我选择“MembershipModel.edmx”并点击“添加”
  3. 选择从数据库生成,然后单击“下一步”
  4. 添加与“aspnetdb”数据库(ASP.NET 成员数据库)的连接
  5. 给它一个合适的名称,我选择“MembershipEntities”
  6. 点击“下一步”
  7. 深入查看表并选择 aspnet_Users
  8. 将模型命名空间更改为 MembershipModel
  9. 点击“完成”

现在您可以添加代码来创建 EF 对象上下文并修改数据库:

public void ChangeUserName(string currentUserName, string newUserName)
{
    using (var context = new MembershipEntities())
    {
        // Get the membership record from the database
        var currentUserNameLowered = currentUserName.ToLower();
        var membershipUser = context.aspnet_Users
            .Where(u => u.LoweredUserName == currentUserNameLowered)
            .FirstOrDefault();

        if (membershipUser != null)
        {
            // Ensure that the new user name is not already being used
            string newUserNameLowered = newUserName.ToLower();
            if (!context.aspnet_Users.Any(u => u.LoweredUserName == newUserNameLowered))
            {
                membershipUser.UserName = newUserName;
                membershipUser.LoweredUserName = newUserNameLowered;
                context.SaveChanges();
            }
        }
    }
}

注意:我没有在代码中考虑应用程序 ID。我通常只有一个应用程序使用 ASP.NET 成员资格数据库,因此如果您有多个应用程序,则需要考虑到这一点。

关于ASP.NET 用户名更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229730/

相关文章:

asp.net - 从ASP.Net WebSite转换为Web Application项目后的MasterType问题

c# - IIS Url 重写 IP 地址

c# - 如何使用 jquery 获取或设置单选按钮列表的选定索引?

c# - ASP.NET:同步客户端和服务器端验证规则

asp.net - 获取特定的成员(member)资格提供者

asp.net - 无法将 ASP.NET 数据库附加到 SQL Server Management Studio

asp.net - 使用sqlite或其他提供程序的asp.net成员资格?

c# - ASP.NET 自定义配置文件错误

asp.net - 强制注销所有在线用户中的特定用户

asp.net - 将一个站点的 asp.net 成员资格记录从一台 SQL Server 传输到另一台