为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 ASP.NET Core 2.1 控制器获取 IdentityUser 数据

无法从 ASP.NET Core 2.1 控制器获取 IdentityUser 数据

C#
明月笑刀无情 2022-06-18 16:22:59
我正在 ASP.NET Core 2.1 中开发一个应用程序。我正在使用带有内置用户帐户的身份。现在我正在尝试在我遇到困难的这个应用程序中开发一个用户维护模块。我无法获取控制器内的数据。这是我的代码:ApplicationDbContext.cs:public class ApplicationDbContext : IdentityDbContext{    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)        : base(options)    {    }    public DbSet<ApplicationUser> ApplicationUsers { get; set; }}启动.cs:public void ConfigureServices(IServiceCollection services)    {        services.Configure<CookiePolicyOptions>(options =>        {            // This lambda determines whether user consent for non-essential cookies is needed for a given request.            options.CheckConsentNeeded = context => true;            options.MinimumSameSitePolicy = SameSiteMode.None;        });        services.AddDbContext<ApplicationDbContext>(options =>            options.UseSqlServer(                Configuration.GetConnectionString("DefaultConnection")));        services.AddIdentity<IdentityUser,IdentityRole>(config => {            config.SignIn.RequireConfirmedEmail = true;        })        .AddEntityFrameworkStores<ApplicationDbContext>()        .AddDefaultUI()        .AddDefaultTokenProviders();        services.AddMemoryCache();        services.AddSession();        services.AddMvc()            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)            .AddSessionStateTempDataProvider();        services.AddSingleton<IEmailSender, EmailSender>();    }应用程序用户.cs:public class ApplicationUser : IdentityUser{    [Required]    public string FirstName { get; set; }    [Required]    public string Name { get; set; }}索引.cshtml:@model IEnumerable<TestIdentity.Models.ApplicationUser>@{    ViewData["Title"] = "Index";}<h2>Application users</h2>@foreach (var item in Model){    <p>@item.Name</p>}_context.ApplicationUsers.ToListAsync()尽管我的 AspNetUsers 表中有数据,但没有返回任何结果。
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

如果您想ApplicationUser为您的身份使用自定义而不是默认IdentityUser。您需要在声明模型后进行一些更改。


1.在dbContext中:


public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

2.在startup.cs中:


services.AddIdentity<ApplicationUser,IdentityRole>(config => {

        config.SignIn.RequireConfirmedEmail = true;

    })

...

3.在你的 /Shared/_LoginPartial.cshtml


@inject SignInManager<ApplicationUser> SignInManager

@inject UserManager<ApplicationUser> UserManager


查看完整回答
反对 回复 2022-06-18
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

IdentityUser不是您的dbContext. 你需要UserManager<IdentityUser>改用。


你的ApplicationUsersController班级应该是这样的


public class ApplicationUsersController : Controller

{

    private readonly ApplicationDbContext _context;

    private readonly UserManager<IdentityUser> _userManager;


    public ApplicationUsersController(ApplicationDbContext context,

                                      UserManager<IdentityUser> userManager;)

    {

        _context = context;

        _userManager = userManager;

    }


    // GET: Administrator/ApplicationUsers

    public async Task<IActionResult> Index()

    {

        return View(await _userManager.Users.Cast<ApplicationUser>().ToListAsync());

    }

}


查看完整回答
反对 回复 2022-06-18
  • 2 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信