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

如何为ASP.NET Web Forms页面请求自动添加Bearer授权令牌?

实现ASP.NET Web Forms自动添加Bearer令牌到所有请求

嘿,你已经搞定了最核心的部分——令牌获取和身份验证逻辑,接下来要让应用自动给请求加Bearer令牌,用Application_BeginRequest事件确实是个靠谱的方案。下面是具体的实现步骤和代码:

1. 在Global.asax.cs中添加请求头逻辑

打开你的Global.asax.cs,找到(或者新增)Application_BeginRequest方法,这里我们可以拦截请求并自动注入Bearer令牌。需要注意几个细节:

  • 跳过不需要认证的路径(比如登录页、静态资源、令牌获取端点)
  • 从安全的存储位置读取令牌(比如Session或加密Cookie)
  • 避免在未登录状态下添加无效的令牌头
protected void Application_BeginRequest(object sender, EventArgs e)
{
    // 定义不需要添加令牌的路径,根据你的实际需求调整
    var excludedPaths = new List<string> { "/Login.aspx", "/token", "/Scripts/", "/Styles/", "/Images/" };
    var currentPath = HttpContext.Current.Request.Path.ToLowerInvariant();
    
    // 如果是排除路径,直接跳过
    if (excludedPaths.Any(path => currentPath.StartsWith(path)))
    {
        return;
    }

    // 从Session中读取之前存储的AccessToken(也可以用加密Cookie替代)
    var accessToken = HttpContext.Current.Session["AccessToken"] as string;
    
    if (!string.IsNullOrEmpty(accessToken))
    {
        // 给请求添加Bearer令牌头
        HttpContext.Current.Request.Headers.Add("Authorization", $"Bearer {accessToken}");
    }
}

2. 存储获取到的令牌

当用户通过/token端点拿到令牌后,需要把它存储起来,这样上面的逻辑才能读取到令牌。比如在你的登录处理代码里(或者前端调用/token成功后)添加存储逻辑:

// 假设你已经通过请求获取到了令牌响应对象
var tokenResponse = FetchTokenFromEndpoint(); // 替换成你的令牌获取逻辑
if (!string.IsNullOrEmpty(tokenResponse.AccessToken))
{
    // 把令牌存入Session,有效期可以和令牌自身的过期时间对齐
    Session["AccessToken"] = tokenResponse.AccessToken;
    // 可选:存储令牌过期时间,后续可以做自动刷新逻辑
    Session["AccessTokenExpiresAt"] = DateTime.Now.AddSeconds(tokenResponse.ExpiresIn);
}

3. 额外注意事项

  • 令牌过期处理:建议在Application_BeginRequest里增加令牌过期检查,如果令牌即将过期,可以自动调用刷新令牌接口重新获取,避免用户重复登录
  • 安全存储:如果用Cookie存储令牌,一定要开启HttpOnly和Secure属性加密存储,防止XSS攻击
  • 精准匹配API路径:如果Web API和Web Forms同属一个应用,可以只针对/api/开头的请求添加令牌,这样更高效

这样设置后,你的Web Forms应用就会自动为符合条件的请求带上Bearer令牌,不用再手动在每个请求里配置啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:07:38