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

基于ASP.NET实现用户管理,搭建带ASP.NET Core Identity的外部应用Web API

ASP.NET Core Web API集成Identity解决方案

你的需求完全可实现,以下是两种可行操作路径:

方案一(推荐):直接基于Web API模板手动集成Identity

Web API模板默认没有内置Identity身份验证选项属于正常设计,Identity原生偏向带UI的Web应用,API场景需搭配Token认证手动集成,步骤如下:

  • 创建空白ASP.NET Core Web API项目,身份验证选项选择「无」
  • 安装所需NuGet包:
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore.你使用的数据库Provider(比如SqlServer、Sqlite)
Microsoft.AspNetCore.Authentication.JwtBearer(如使用JWT做API认证)
  • 自定义Identity用户类和数据上下文:
// 自定义用户类,可扩展额外字段
public class AppUser : IdentityUser
{
}

// Identity专属数据库上下文
public class AppIdentityDbContext : IdentityDbContext<AppUser>
{
    public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : base(options)
    {
    }
}
  • 在Program.cs中注册服务和中间件:
// 注册数据库上下文
builder.Services.AddDbContext<AppIdentityDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("IdentityDb")));

// 注册Identity核心服务
builder.Services.AddIdentityCore<AppUser>(opt =>
{
    // 按需配置密码、账号规则
    opt.Password.RequireDigit = true;
    opt.User.RequireUniqueEmail = true;
})
.AddEntityFrameworkStores<AppIdentityDbContext>()
.AddDefaultTokenProviders();

// 注册JWT认证服务(按需配置)
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(opt =>
    {
        // 配置JWT的签发、校验规则
        opt.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = builder.Configuration["Jwt:Issuer"],
            ValidAudience = builder.Configuration["Jwt:Audience"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
        };
    });

builder.Services.AddAuthorization();
builder.Services.AddControllers();

// --- 中间件配置顺序不能修改 ---
var app = builder.Build();
app.UseHttpsRedirection();
app.UseRouting();
// 认证必须在授权之前
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
  • 执行EF Core迁移命令初始化Identity数据库表,后续可自行封装注册、登录、权限管理等API接口,直接调用Identity内置的UserManager<AppUser>、SignInManager<AppUser>等工具类即可使用所有Identity能力。

方案二:修复现有Web App+API控制器的访问问题

你之前操作出现路由访问失败,90%概率是配置缺失,按以下步骤排查修复即可:

  • 确认你的API控制器添加了[ApiController]和[Route("api/[controller]/[action]")]特性,和Web App的Razor Pages路由做隔离
  • 确认Program.cs中已添加控制器服务注册和端点映射:
// 服务注册部分
builder.Services.AddControllers();

// 端点映射部分
app.MapControllers();

Web App默认模板只会注册Razor Pages相关服务,未添加控制器配置会导致API路由无法被识别。

  • 如果需要API和Web页面使用不同的认证逻辑,给API控制器单独指定认证方案:[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)],避免和页面的Cookie认证冲突。
  • 外部应用调用API前按需配置CORS跨域规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:45:02