是否可以在没有export function PasswordStrengthValidator(control: AbstractControl): { [key: string]: any } | null {
....
}
的情况下使用SignInManager
?我正在制作Blazor服务器端应用程序,需要使最终用户使用HTTPContext
的{{1}}方法登录。
如果还有其他方法可以对Cookie或其他方法进行处理,只要它们是“干净的”方法,我也会接受。
如果我还能获得关于如何为PasswordSignInAsync()
配置解决方案的说明,那将是完美的。
答案 0 :(得分:1)
我强烈建议您在应用中使用身份验证系统。 您不应尝试创建任何身份验证系统。这是免费的,并且在几分钟之内即可完成设置。不要浪费时间去做一些复杂的事情。相反,了解什么是Blazor授权组件以及如何在应用程序中使用它们。他们都是伟大的。
注意:Blazor服务器与其客户端之间的通信是通过SignaleR完成的。 HttpContext大部分时间不可用。不要尝试使用HttpContext。实际上,您不能这样做,因为无论何时尝试访问它,它都是null。
以下内容描述了如何使用身份UI创建Blazor Server应用程序:
开始创建Blazor应用
在名为“创建新Blazor应用程序”的窗口中,执行以下操作:
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);
}
}
}