首页 > 解决方案 > 在服务器端 Blazor 中使用 SignInManager

问题描述

SignInManager没有一些可以使用HTTPContext吗?我正在制作一个 Blazor 服务器端应用程序,我需要让最终用户PasswordSignInAsync()使用SignInManager.

如果还有其他方法可以使用 cookie 或其他方法,我也会采用,只要它们是“干净”的方法。

如果我还可以获得有关如何配置Startup.cs解决方案的说明,那将是完美的。

标签: c#asp.netasp.net-coreblazorblazor-server-side

解决方案


要在服务器端 Blazor 中使用 SignInManager,

首先,将AddIdentity服务添加到Startup.cs

services.AddIdentity<IdentityUser, IdentityRole>(options => {
            options.SignIn.RequireConfirmedAccount = false;    
        })
      .AddEntityFrameworkStores<AppDBContext>()
      .AddDefaultTokenProviders();

然后,注入SignInManager你的剃须刀页面

@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject NavigationManager navManager;

<!-- Put Login Form Here -->

@code{
 protected async Task Submit()
 {
    var SignInResult= await SignInManager.PasswordSignInAsync("username", "password", true, lockoutOnFailure: false);
    if (SignInResult.Succeeded)
    {
       navManager.NavigateTo("Home", false);
    }
 }
}

推荐阅读