You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在.NET 8中搭建Microsoft Identity的Bearer Token RESTful API并修改默认端点?

自定义无UI Identity API端点的脚手架实现方案

先搞定依赖

确保你的API项目已经安装这两个NuGet包:

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore(Identity核心依赖)
  • Microsoft.VisualStudio.Web.CodeGeneration.Design(脚手架工具)
    没装的话直接在NuGet包管理器中搜索安装即可。

用脚手架生成可修改的API端点

打开Package Manager Console(或终端进入项目根目录),执行对应命令:

Package Manager Console 命令

Scaffold-Identity -Api -DbContext ApplicationDbContext -OutputDir Areas/Identity/Api

终端dotnet命令

dotnet aspnet-codegenerator identity --api --dbcontext ApplicationDbContext --output-dir Areas/Identity/Api

该命令会将Identity核心API端点(注册、登录、用户信息管理等)生成到Areas/Identity/Api目录下,所有代码均为可编辑状态,无需依赖框架默认的黑盒逻辑。

修改端点路由

生成的控制器默认使用[Route("[controller]/[action]")]路由规则,直接修改该属性即可自定义端点路径。比如将登录端点改为/api/auth/login:

[Route("api/auth/[action]")]
public class AccountController : ControllerBase
{
    [HttpPost]
    public async Task<IActionResult> Login(LoginModel model)
    {
        // 可直接修改登录逻辑、token生成规则
    }
}

替换默认端点

如果项目之前使用了框架自带的MapIdentityApi<IdentityUser>()默认端点,记得在Program.cs中注释掉该代码,然后注册生成的自定义控制器:

var builder = WebApplication.CreateBuilder(args);

// 保留Identity核心服务,但不使用默认端点
builder.Services.AddIdentityApiEndpoints<IdentityUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

// 注册自定义的Identity API控制器
builder.Services.AddControllers()
    .AddApplicationPart(typeof(Areas.Identity.Api.AccountController).Assembly);

var app = builder.Build();

// 注释默认端点映射
// app.MapIdentityApi<IdentityUser>();

// 映射自定义控制器路由
app.MapControllers();

app.Run();

额外提示

  • 生成的代码包含完整的JWT生成逻辑,可直接修改token的过期时间、签名算法、携带的Claims等配置。
  • 如果使用了自定义ApplicationUser(比如新增手机号字段),需先更新DbContext再执行脚手架命令,生成的代码会自动适配自定义用户模型。

内容的提问来源于stack exchange,提问作者LucianoFCastillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:52:14