Bet*_*tty 2 c# azure entity-framework-core azure-functions
将 Azure Functions 2.0 与 EasyAuth 结合使用(Azure 一键选项以启用针对 azure 广告的身份验证)。
这允许我在函数定义中得到一个 ClaimsPrincipal
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequest req, ClaimsPrincipal principal)
Run Code Online (Sandbox Code Playgroud)
这很棒,但我希望能够访问 DbContext 中的当前 userId,以便我可以使用 EFCore HasQueryFilter 功能进行安全调整。
我的 DbContext 被注入到我的 azure 函数端点类中,我更愿意保持这种方式,而不是在端点中手动创建它。
虽然我可能可以在每个请求的上下文中设置一个属性,但我更希望能够通过依赖项注入将 ClaimsPrincipal 或其部分注入到 DbContext 中,这样我就不需要在每个函数中手动执行此操作。
ClaimsPrincipal 默认情况下似乎没有连接用于注入,我也没有找到可以注入的另一个可以访问它的类。
通过注册 IHttpContextAccessor 以在启动时注入
public void Configure(IWebJobsBuilder builder)
{
builder.Services.AddHttpContextAccessor();
}
Run Code Online (Sandbox Code Playgroud)
然后您可以在 dbcontext 中使用它
public DbContext(DbContextOptions<DbContext> options, IHttpContextAccessor httpContextAccessor) : base(options)
{
if (httpContextAccessor != null)
{
var principal = httpContextAccessor.HttpContext.User;
//do stuff here with principal
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |