能否在.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
相关产品推荐
相关产品推荐

