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

已配置AddAuthentication但无需Token即可访问API端点问题排查

问题分析与解决办法

你当前的代码仅配置了身份验证的基础框架,但没有为API端点设置强制授权的规则,默认情况下ASP.NET Core会允许所有匿名请求访问端点,因此即使前端不携带Token也能正常调用API。

解决方式有两种,任选其一即可:

1. 全局配置默认授权策略(推荐)

修改AddAuthorization的配置,添加默认回退策略,强制所有未指定特殊授权规则的端点必须经过身份验证:

builder.Services.AddAuthorization(options =>
{
    // 设置全局默认策略:所有端点必须使用已认证用户访问
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});

如果有个别端点需要允许匿名访问,只需在对应的控制器或Action上添加[AllowAnonymous]特性即可。

2. 为单个控制器/Action添加授权特性

在需要保护的控制器类或具体Action上添加[Authorize]特性,明确指定该端点需要身份验证:

[ApiController]
[Route("api/[controller]")]
[Authorize] // 此控制器下所有Action均需授权
public class YourController : ControllerBase
{
    // 示例:允许匿名访问的Action
    [AllowAnonymous]
    [HttpGet("public-info")]
    public IActionResult GetPublicInfo()
    {
        return Ok("这是公开信息");
    }

    // 需要授权才能访问的Action
    [HttpGet("private-data")]
    public IActionResult GetPrivateData()
    {
        return Ok("这是需要授权的私有数据");
    }
}

额外检查

你的中间件顺序是正确的(UseAuthentication → UseAuthorization → MapControllers),这个顺序确保了认证逻辑在授权之前执行,无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:54:25