ASP.Net Core Identity - 管理其他用户
Posted
技术标签:
【中文标题】ASP.Net Core Identity - 管理其他用户【英文标题】:ASP.Net Core Identity - Manage other users 【发布时间】:2021-01-10 13:07:14 【问题描述】:我自定义了默认用户身份并创建了多个用户。 假设我是管理员并且我想管理其他用户信息(更改属性值)。 如果我有他们的 ID,我如何访问其他用户的数据。
我可以检索表中的所有用户并在“asp-route-id”中获取他们的 ID
@foreach (var item in Model.ApplicationUser)
<tr>
<td>
@html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage" asp-route-id="@item.Id">Edit</a>
我在使用 userManager 检索\更新其他用户信息时卡住了 在 Get 和 Post 方法中。
【问题讨论】:
【参考方案1】:我设法使用 lambda 表达式解决了它
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
ID应该通过asp-route获取
我已发布以下代码供参考:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using WebApplication2.Models;
namespace WebApplication2.Areas.Identity.Pages.Account.Manage
public partial class IndexModel : PageModel
private readonly UserManager<ApplicationUser> _userManager;
//private readonly SignInManager<ApplicationUser> _signInManager;
public IndexModel(
UserManager<ApplicationUser> userManager)
_userManager = userManager;
[BindProperty]
public InputModel Input get; set;
public class InputModel
public string FirstName get; set;
public string LastName get; set;
public string Username get; set;
private async Task LoadAsync(string ID)
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
Input = new InputModel
FirstName = UsertoEdit.FirstName,
LastName = UsertoEdit.LastName,
Username = UsertoEdit.UserName
;
public async Task<IActionResult> OnGetAsync(string ID)
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
if (UsertoEdit == null)
return NotFound($"Unable to load user with ID '_userManager.GetUserId(User)'.");
await LoadAsync(ID);
return Page();
public async Task<IActionResult> OnPostAsync(string ID)
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
if (UsertoEdit == null)
return NotFound($"Unable to load user with ID '_userManager.GetUserId(User)'.");
if (!ModelState.IsValid)
await LoadAsync(UsertoEdit.UserName);
return Page();
if (Input.FirstName != UsertoEdit.FirstName)
UsertoEdit.FirstName = Input.FirstName;
if (Input.LastName != UsertoEdit.LastName)
UsertoEdit.LastName = Input.LastName;
await _userManager.UpdateAsync(UsertoEdit);
return RedirectToPage("/Users");
【讨论】:
以上是关于ASP.Net Core Identity - 管理其他用户的主要内容,如果未能解决你的问题,请参考以下文章
“Identity.External”的 ASP.NET Core 标识异常
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门
ASP.Net Core 如何在 EF Core 和 Identity 中获取用户角色