asp.net-core - .Net Core Web API 项目中的 Hangfire 仪表板
问题描述
我们有一个 .Net Core 2.0 Web API 项目。我在那里添加了hangfire。我们项目中没有任何网页,我使用 JWT 进行授权。所以我无法使用 Authorize(DashboardContext context) 对 hangfire 进行授权。有什么方法可以在 url 上传递某种 API 密钥来授权用户使用仪表板?
谢谢
解决方案
实现 IAuthorizationDashboardFilter 类。在这里试试这个帖子。您需要在每个请求中传递 JWT 令牌,尝试将令牌存储在 cookie 中或作为查询字符串参数。然后你可以从请求上下文中提取它并决定用户是否被授权
public class MyAuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize(DashboardContext context)
{
var httpContext = context.GetHttpContext();
var token = context.Request.Cookies["access-token"];
// check token validity and set authentication accordingly.
return httpContext.User.Identity.IsAuthenticated;
}
}
在您使用的任何身份验证方法之后,像这样在您的 OWIN 管道中注册过滤器。然后登录的用户声明将在过滤器中可用
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(...); // Authentication - first
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new [] { new MyAuthorizationFilter() }
}); // Hangfire - last
}
推荐阅读
- linux - 使用 CURL 抓取图像?
- c# - 如何将 C# Web API BasicAuthentication 与 IIS 集成?
- c# - Hangfire 排队错过的时间表
- mysql - Symfony2 在 Symfony 和 csv 文件中添加查询日志
- postgresql - 如何在尝试启动 pgsql 容器时修复“无法启动服务 pgsql:b'OCI 运行时创建失败:”?
- swift - 如何从快照闭包中返回 Array 的值并将其用于为 segue 做准备?
- node.js - 节点快递,res.send 内存溢出
- php - Symfony - 查找最后创建的实体
- javascript - 从图像轮播中删除过渡
- go - Prometheus Exporter - 直接检测与自定义收集器