.NET 8 中身份的新增功能

2023 年 4 月,我撰写了有关 ASP.NET Core 团队致力于改进 .NET 8 中的身份验证、授权和身份管理的文章。我们提出的计划包括三个关键可交付成果:

  • 新的 API 可简化单页应用程序 (SPA) 和 Blazor WebAssembly 等客户端应用程序的登录和身份管理。
  • 在 ASP.NET Core Identity 中为无法使用 cookie 的客户端启用基于令牌的身份验证和授权。
  • 文档的改进。

所有三个可交付成果都将随 .NET 8 一起提供。此外,我们还能够为 Blazor Web 应用程序添加新的身份 UI,该应用程序可与新的渲染模式、服务器和 WebAssembly 配合使用。

让我们看一下 .NET 8 中的新更改所支持的一些场景。在这篇博文中,我们将介绍:

让我们看一下使用新身份功能的最简单场景。

基本 Web API 后端

使用新授权的一种简单方法是在基本 Web API 应用程序中启用它。同一应用程序还可以用作 Blazor WebAssembly、Angular、React 和其他单页 Web 应用程序 (SPA) 的后端。假设您从 .NET 8 中包含 OpenAPI 的 ASP.NET Core Web API 项目开始,您可以通过几个步骤添加身份验证。

身份是“选择加入”的,因此需要添加一些包:

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore– 支持 EF Core 集成的包
  • 您希望使用的数据库的包,例如Microsoft.EntityFrameworkCore.SqlServer(我们将在本示例中使用内存数据库)

您可以使用 NuGet 包管理器或命令行添加这些包。例如,要使用命令行添加包,请导航到项目文件夹并运行以下 dotnet 命令:

dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.InMemory

Identity 允许您自定义用户信息和用户数据库,以防您的需求超出 .NET Core 框架中提供的范围。对于我们的基本示例,我们将仅使用默认的用户信息和数据库。为此,我们将向项目添加一个名为 的新类,MyUser该类继承自IdentityUser

class MyUser : IdentityUser {}

添加一个名为的新类,AppDbContext该类继承自IdentityDbContext<MyUser>

class AppDbContext(DbContextOptions<AppDbContext> options) : 
        IdentityDbContext<MyUser>(options)
{
}

提供特殊的构造函数可以为不同的环境配置数据库。

要设置应用程序的身份,请打开该Program.cs文件。通过在调用后添加以下代码来配置身份以使用基于 cookie 的身份验证并启用授权检查WebApplication.CreateBuilder(args)

builder.Services.AddAuthentication(IdentityConstants.ApplicationScheme)
    .AddIdentityCookies();
builder.Services.AddAuthorizationBuilder();

配置 EF Core 数据库。在这里,我们将使用内存数据库并将其命名为“AppDb”。此处用于演示,因此可以轻松重新启动应用程序并测试注册和登录流程(每次运行都将从新的数据库开始)。更改为 SQLite

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值