在服务器端Blazor中使用SignInManager

时间:2019-11-21 11:26:03

标签: c# asp.net blazor blazor-server-side

是否可以在没有export function PasswordStrengthValidator(control: AbstractControl): { [key: string]: any } | null { .... } 的情况下使用SignInManager?我正在制作Blazor服务器端应用程序,需要使最终用户使用HTTPContext的{​​{1}}方法登录。

如果还有其他方法可以对Cookie或其他方法进行处理,只要它们是“干净的”方法,我也会接受。

如果我还能获得关于如何为PasswordSignInAsync()配置解决方案的说明,那将是完美的。

2 个答案:

答案 0 :(得分:1)

我强烈建议您在应用中使用身份验证系统。 您不应尝试创建任何身份验证系统。这是免费的,并且在几分钟之内即可完成设置。不要浪费时间去做一些复杂的事情。相反,了解什么是Blazor授权组件以及如何在应用程序中使用它们。他们都是伟大的。

注意:Blazor服务器与其客户端之间的通信是通过SignaleR完成的。 HttpContext大部分时间不可用。不要尝试使用HttpContext。实际上,您不能这样做,因为无论何时尝试访问它,它都是null。

以下内容描述了如何使用身份UI创建Blazor Server应用程序:

  • 开始创建Blazor应用

  • 在名为“创建新Blazor应用程序”的窗口中,执行以下操作:

    1. 选择Blazor服务器应用程序
    2. 窗口的右侧是“身份验证”标题下带有“更改”文本的链接。点击链接,然后选择个人用户帐户。按确定...
    3. 点击“创建”按钮

Visual Studio为您创建了具有身份UI的Blazor Server应用,以对您的用户进行身份验证。请注意,身份UI实际上是与Razor Pages和MVC一起使用的Razor Pages Identity UI。如果需要进行一些更改,则可以从该系统中支撑一个或多个项目。转到解决方案资源管理器,并验证Visual Studio是否已添加两个名为Areas和Data的文件夹。她还为您的Startup类配置了必要的服务,以管理Identity UI。现在,您想要创建一个存储用户名,角色,声明等的数据库。要创建数据库,您应该使用 migrations Here is a link告诉您如何运行为您完成任务的命令。现在,您可以运行您的应用程序,注册到网站,登录,注销等。

上帝的运气。

答案 1 :(得分:0)

要在服务器端 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);
    }
 }
}