如何为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
相关产品推荐
相关产品推荐

