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

如何为Datatables Editor添加AAD访问令牌连接Azure SQL数据库?

解决方案:为Datatables Editor配置Azure SQL AAD访问令牌

要给Datatables Editor的数据库连接添加AAD访问令牌,核心是直接使用已配置好的SqlConnection实例(而非仅传连接字符串),以此手动设置AccessToken属性。具体实现如下:

修改后的完整代码示例:

private readonly IConfiguration _configuration;
private readonly IHttpContextAccessor _httpContextAccessor;

// 构造函数注入依赖
public YourController(IConfiguration configuration, IHttpContextAccessor httpContextAccessor)
{
    _configuration = configuration;
    _httpContextAccessor = httpContextAccessor;
}

[HttpGet, HttpPost]
public ActionResult Table()
{
    // 获取基础连接字符串
    string dbConnectionString = _configuration.GetConnectionString("AzureSQL");
    
    // 创建SqlConnection并设置AAD访问令牌
    using var conn = new SqlConnection(dbConnectionString);
    conn.AccessToken = _httpContextAccessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"];

    // 使用已配置的SqlConnection初始化Database
    var db = new Database("azure", conn, "Microsoft.Data.SqlClient");
    
    var response = new Editor(db, "Test")
        .Model<Test>()
        .Field(new Field("FullName"))
        .Field(new Field("Updated")
            .Set(Field.SetType.Both)
            .SetValue(@DateTime.UtcNow))
        .Field(new Field("EntryUser")
            .Set(Field.SetType.Both)
            .SetValue(@User.Identity.Name))
        .Process(Request)
        .Data();

    return Json(response);
}

关键说明:

  • Datatables Editor的Database类支持直接接收DbConnection类型实例(此处为SqlConnection),这是实现自定义连接配置的核心
  • 确保IHttpContextAccessor已在项目中注册(.NET 6+默认已注册,旧版本需手动添加services.AddHttpContextAccessor())
  • 令牌来源与你EF Core的实现一致,均取自App Service传递的X-MS-TOKEN-AAD-ACCESS-TOKEN请求头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:17:19