繁体   English   中英

在服务器端使用 SignInManager Blazor

[英]Using SignInManager in server-side Blazor

是否可以在没有HTTPContext SignInManager 我正在制作一个 Blazor 服务器端应用程序,我需要让最终用户使用SignInManagerPasswordSignInAsync()方法登录。

如果有其他方法可以用 cookies 或其他方法来做,我也会接受,只要它们是“干净”的方法。

如果我还能得到有关如何为Startup.cs配置解决方案的解释,那将是完美的。

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

注意:Blazor Server 与其客户端之间的通信是通过 SignaleR 完成的。 HttpContext 大部分时间都不可用。 不要尝试使用 HttpContext。 实际上,您不能,因为每当您尝试访问它时,它都是 null。

下面介绍如何使用身份 UI 创建 Blazor 服务器应用程序:

  • 开始创建 Blazor 应用程序

  • 在标题为 Create a new Blazor app 的 window 中执行以下操作:

    1. Select Blazor 服务器应用程序
    2. window 的右侧是一个链接,在 Authentication 标题下带有文本 Change。 点击链接和 select 个人用户帐户。 按确定...
    3. 单击“创建”按钮

Visual Studio 已为您创建了一个带有身份 UI 的 Blazor 服务器应用程序来验证您的用户。 请注意,Identity UI 实际上是与 Razor Pages 和 MVC 一起使用的 Razor Pages Identity UI。 如果您需要进行一些更改,您可以从这个系统中搭建一个或多个项目。 Go 到解决方案资源管理器并验证 Visual Studio 是否已添加名为 Areas 和 Data 的两个文件夹。 她还为您的 Startup class 配置了必要的服务来管理身份 UI。 您现在想要的是创建存储用户名、角色、声明等的数据库。 要创建数据库,您应该使用迁移 这是一个链接,告诉您如何运行为您完成工作的命令。 现在您可以运行您的应用程序、注册到 web 站点、登录、注销等。

祝你好运。

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

首先,将AddIdentity注入Startup.cs

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

然后,将SignInManager注入您的 razor 页面

@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);
    }
 }
}

还有另一种方式没有人提到,所以我想我也可以:你可以使用中间件登录,因为中间件携带完整的 html 请求并可以修改它(例如,通过登录),然后它跟随管道到 Blazor 渲染. 我使用这种方法为我的游戏页面创建临时来宾用户——之所以有效,是因为来宾不需要输入和提交他们自己的明文密码。

确保登录安全的后勤工作可能并不比遵循@.net 的建议更容易,即使用内置脚手架身份验证系统,或使用 UserManager 登录并重新导航到您的页面。 但是,您可以使用模式框登录,而不必导航到 MVC 样式的登录页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM