在 ASP.NET Identity 2 中通过 UserManager.Update() 更新用户

2024-04-04

I use ASP.NET Identity 2 in an MVC 5项目,我想更新Student数据通过使用UserManager.Update()方法。然而,正如我继承自ApplicationUser类,我需要映射Student to ApplicationUser在调用 update 方法之前。另一方面,当使用我也用于创建新学生的方法时,当我创建新实例而不是更新实例时,由于并发而出现错误。因为我很无聊使用解决问题AutoMapper,我需要一个稳定的修复来解决问题,而不需要AutoMapper。您能帮我解释一下如何解决这个问题吗?我通过StudentViewModel到控制器中的 Update 方法,然后我需要将其映射到 Student,然后将它们传递给UserManager.Update()方法如ApplicationUser。另一方面,我想知道是否应该在控制器阶段检索并发送密码,而不是出于安全考虑而传递到视图?您能否也告诉我这个问题(在用户更新期间,我不更新密码,我必须将用户的密码保留在数据库中)。任何帮助,将不胜感激。

实体类:

public class ApplicationUser : IdentityUser<int, ApplicationUserLogin,
                                     ApplicationUserRole, ApplicationUserClaim>, IUser<int>
{
    public string Name { get; set; }
    public string Surname { get; set; } 
    //code omitted for brevity
}

public class Student: ApplicationUser
{     
    public int? Number { get; set; }
}

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Update([Bind(Exclude = null)] StudentViewModel model)
{
    if (ModelState.IsValid)
    {
        ApplicationUser user = UserManager.FindById(model.Id);

        user = new Student
        {
            Name = model.Name,
            Surname = model.Surname,
            UserName = model.UserName,
            Email = model.Email,
            PhoneNumber = model.PhoneNumber,
            Number = model.Number, //custom property
            PasswordHash = checkUser.PasswordHash
        };

        UserManager.Update(user);
    }
}

无需通过student as ApplicationUser to the UserManager.Update()方法(因为Student类继承(因此is) ApplicationUser).

您的代码的问题是您正在使用new Student操作员,从而创建一名新学生而不是更新现有学生。

像这样更改代码:

// Get the existing student from the db
var user = (Student)UserManager.FindById(model.Id);

// Update it with the values from the view model
user.Name = model.Name;
user.Surname = model.Surname;
user.UserName = model.UserName;
user.Email = model.Email;
user.PhoneNumber = model.PhoneNumber;
user.Number = model.Number; //custom property
user.PasswordHash = checkUser.PasswordHash;

// Apply the changes if any to the db
UserManager.Update(user);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET Identity 2 中通过 UserManager.Update() 更新用户 的相关文章

  • 采用 std::vector 或 std::array 的模板函数

    我有一个函数 当前接受 2 个向量 其中可以包含任何普通的旧数据 template
  • MVC URL 路由自定义 url

    我想传递 url 链接 例如 http localhost 24873 Jobs companyname or http localhost 24873 companyname Jobs Preferred 我尝试在全局 aspx 文件中进
  • Boost MPI 在监听列表时不会释放资源?

    这是一个后续问题如何释放 boost mpi request https stackoverflow com questions 44078901 how do i free a boostmpirequest 我在监听列表而不是单个项目时
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 预编译头和 Visual Studio

    有没有办法设置 Visual Studio 解决方案参数 以便它只创建预编译头而不构建整个解决方案 具体来说 它是一个巨大的 C 解决方案 本身有许多项目 谢谢 仅选择 pch 创建者源文件 通常是 stdafx cpp 然后编译该文件 C
  • 选择initializer_list迭代器定义

    Why std initializer list
  • 在 .NET Core 中从 HttpResponseMessage 转换为 IActionResult

    我正在将之前在 NET Framework 中编写的一些代码移植到 NET Core 我有这样的事情 HttpResponseMessage result await client SendAync request if result St
  • 原子存储抛出错误

    我最近升级到了 C 11 兼容编译器 并且尝试将一些代码从 boost 更新到 c 11 标准 我在使用atomic store转换一些代码时遇到了问题 这是一些简单的测试代码 似乎会引发编译器错误 int main std shared
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • 本地时间的内存需要释放吗?

    void log time t current time 0 tm ptm localtime current stuf 只是想确定 我是否需要在方法结束时释放 tm 指针分配的内存 不 你不应该释放它 该结构是静态分配的 检查文档 htt
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 将许多表转换为 Excel 列

    我创建了用于文章审阅的网络应用程序 我有一个名为 Article 的表 每个表Article有一些ArticleReview Article ArticleId ArticleTitle NumberOfComment NumberOfVi
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 在 C# 命令行应用程序中包含并执行 EXE

    所以我找到了一个很棒的小 EXE 命令行应用程序 我们将其称为 program exe 它输出一些我想用 C 操作的数据 我想知道是否有一种方法可以将program exe 打包 到我的Visual Studio项目文件中 这样我就可以将编
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • C# PasswordDeriveBytes:似乎 Salt 并不重要

    可能我误解了什么 以下代码通过 CryptDeriveKey 使用两种不同的盐生成两个相等的密钥 这是控制台结果 盐1 21 3e 18 a3 9a 8b 5f gt 键 da 89 ea 3d 91 08 20 98 20 e9 dc 4
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac

随机推荐

  • 如何使用 perl 解释器转义单引号?

    如何转义 bash 表达式中的单引号find xargs perl pi e s conflicts gt g 我想替换我的文件中的字符串 conflicts gt FatalError和gpojd都给出了很好的解决方案 我将用另一种选择来
  • 如何使用Python获取请求中响应的原始内容?

    尝试获取HTTP响应内容的原始数据requests在Python中 我有兴趣通过另一个渠道转发响应 这意味着理想情况下内容应该尽可能原始 这样做的好方法是什么 After requests get 您可以使用r content提取原始字节类
  • 如何在今天的 v8 中包含另一个 js 文件?

    我找到了一个旧的答案和后来的更新here https stackoverflow com questions 1149340 how do you include another js file in googles v8 但是我很难将此代
  • GoJS中如何动态添加Node数据和Link数据?

    myDiagram model new go GraphLinksModel key Alpha color lightblue key Delta color pink from Alpha to Alpha from Delta to
  • PHPExcel 和文本换行

    我知道这行代码将使单元格文本换行 objPHPExcel gt getActiveSheet gt getStyle D1 gt getAlignment gt setWrapText true D1 是所选的单元格 有没有办法让整个 Ex
  • 将 void* 转换为二维数组

    我有一个 void 我正在进入某个函数 它实际上是一个二维 int 数组 我想将它作为参数发送给需要二维数组的函数 正确施放它的最佳方法是什么 void foo void val How to cast val in order to se
  • Android Compose 中的 TextField 与键盘重叠

    我有一个TextField在列中verticalScroll 添加大量字符时 文本字段大小超出键盘范围 我看不到正在输入的内容 我尝试使用this https google github io accompanist insets lib
  • 从 Android UI 抽象 Firebase

    我面临的问题是 当我们将 Firebase 与 Activity 或 Fragment 连接时 Firebase 作为实时数据库效果很好 但是尝试与视图元素分离并为其创建一些抽象 因为例如我们想在测试时或将来替换它 变得相当困难 尤其是尝试
  • 在 Python 中读取 JSON 对象时遇到问题

    我有一个 JSON 对象 我试图使用 Python 读取它 但遇到一些问题 我有一个名为 test txt 的文件 其中包含收到的 JSON 对象 test txt 的内容如下 Sections Now Thursday 3 Februar
  • 如果不分配给变量,为什么 Powershell Array of Array 显示不同的内容

    如果 cmdlet 返回数组的数组 例如 function test results New Object System Collections ArrayList array for idx 0 idx lt 3 idx obj New
  • AFHTTPClient.m 不再出现在 AFNetworking 中?

    我正在遵循教程 http bit ly 1dbLaPh http bit ly 1dbLaPh 使用 AFNetworking 它说要创建一个从 AFHTTPClient 派生的新类 这个选项没有出现在 SubClass Of 字段中 我检
  • 何时使用“raise_for_status”与“status_code”测试

    我一直用 r requests get url if r status code 200 my passing code else anything else if this even exists 现在我正在解决另一个问题并决定允许其他错
  • 出现异常:指定的网络名称不再可用。 (0x80070040)尝试使用 ReadToEndAsync() 读取 HttpRequest Body 时

    我有一个 API post Web 方法 尝试使用 StreamReader 获取请求正文ReadToEndAsync 大多数情况下它工作正常 但是对于非常随机的请求 我收到以下异常 客户端已断开连接 有内在的例外 指定的网络名称不再可用
  • Mat-accordion 不是已知元素

    我正在开发一个 angular10 应用程序 我尝试在我的项目中使用 mat accordion 每个组件使用模块 每个组件都有自己的 module ts 文件 下面是我的模块文件代码 import NgModule from angula
  • 根据 hcharter 中给定的序列设置热图颜色范围

    在这里我尝试使用创建热图highcharter hcharter where 小于 1应该是一种颜色 粉红色 1 to 1应该是透明或白色的 并且大于 1应该是另一种颜色 紫色 目前我已经使用编写代码hchart 并使用color stop
  • 在 jquery 选择器中使用 rel 属性中的变量

    我使用 rel 属性将 div 与按钮匹配 我在相应 div 的 rel 字段中使用按钮的 id 有多个按钮 单击按钮时 我想使用 show 方法显示相应的 div 并隐藏其他 div 按钮工作正常 但 div 没有响应 我的直觉告诉我 我
  • C Win32:从 HBITMAP 保存 .bmp 图像

    我正在使用图像采集卡 需要从计算机内存中获取图像并将其保存在图像文件中 经过几天的尝试 我最终得到了以下两个函数 它创建了一个文件 Windows操作系统能够运行 bmp文件 但位图文件是黑色的 图像大小为900KB 640 480 有人知
  • Android 追加文本文件

    我试图将对话框选择器中的唤醒时间和睡眠时间记录到这样的文本文件中 但是对方法 commitToFile2 的调用不会附加文本文件 savedData txt 我知道这段代码非常非常肮脏 我是 Java 新手 所以任何其他建议将不胜感激 pa
  • 标签内运行 JavaScript?

    我有一个处理选项卡切换的 JavaScript 文件 这是来源 var tCount 0 function SwitchToTab id if id lt 0 id gt tCount id 0 for var i 0 i lt tCoun
  • 在 ASP.NET Identity 2 中通过 UserManager.Update() 更新用户

    I use ASP NET Identity 2 in an MVC 5项目 我想更新Student数据通过使用UserManager Update 方法 然而 正如我继承自ApplicationUser类 我需要映射Student to