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

如何在ASP.NET Core 8 Web API中配置Cookie身份验证机制?

在ASP.NET Core 8 Web API中配置Cookie身份验证

要让/login?useCookies=true返回的Cookie实现身份验证,你需要调整认证方案的默认配置并完善Cookie参数设置,以下是具体修改步骤:

1. 核心配置调整要点

原代码默认仅启用Bearer Token认证,需将Cookie认证设为默认方案,并补充Cookie的安全与有效期配置。

2. 修改后的完整Program.cs代码

using Backend.Api.Data;
using Microsoft.AspNetCore.Identity;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

// 注册数据库上下文
builder.Services.AddDbContext<AppDbContext>();

// 配置Identity并启用内置API端点
builder.Services.AddIdentityApiEndpoints<IdentityUser>()
    .AddEntityFrameworkStores<AppDbContext>();

// 设置Cookie为默认认证方案,同时保留Bearer Token支持(可选)
builder.Services.AddAuthentication(IdentityConstants.ApplicationScheme)
    .AddBearerToken(IdentityConstants.BearerScheme);

// 配置Application Cookie的具体参数
builder.Services.ConfigureApplicationCookie(options =>
{
    options.Cookie.HttpOnly = true; // 禁止前端JS访问,提升安全性
    options.ExpireTimeSpan = TimeSpan.FromMinutes(5); // Cookie有效期5分钟
    options.SlidingExpiration = true; // 用户活动时自动延长有效期
    options.Cookie.SameSite = SameSiteMode.Lax; // 跨域场景可调整为None(需配合HTTPS)
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // 仅在HTTPS环境下传输Cookie
});

builder.Services.AddAuthorization();

var app = builder.Build();

app.UseHttpsRedirection();

// 中间件顺序必须严格:认证在前,授权在后
app.UseAuthentication();
app.UseAuthorization();

// 映射Identity内置API端点
app.MapIdentityApi<IdentityUser>();

app.MapControllers();

app.Run();

关键修改说明

  • 默认方案切换:将AddAuthentication的默认方案改为IdentityConstants.ApplicationScheme(Cookie认证方案),让系统优先使用Cookie验证身份。
  • 兼容Bearer Token:通过AddBearerToken保留Bearer认证支持,若不需要兼容可移除该行。
  • 安全强化配置:补充SameSite和SecurePolicy,这是生产环境下的必要安全设置,避免Cookie被非法窃取或滥用。

验证步骤

  1. 调用POST /login?useCookies=true接口,传入合法用户名密码,响应头会返回Set-Cookie字段。
  2. 后续请求API时,浏览器会自动携带该Cookie(或手动在请求头添加Cookie: {Cookie内容}),即可通过身份验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:57:39