add hangfire
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
using System.Text.Json;
|
||||
using Microsoft.Extensions.Caching.Distributed;
|
||||
|
||||
namespace SimApi.Helpers;
|
||||
|
||||
public class SimApiCache(IDistributedCache cache)
|
||||
{
|
||||
private const string Prefix = "SimApi:Cache";
|
||||
|
||||
public void Set(string key, object value, DistributedCacheEntryOptions? options = null)
|
||||
{
|
||||
if (options is not null)
|
||||
{
|
||||
cache.SetString(Prefix + key, SimApiUtil.Json(value), options);
|
||||
}
|
||||
else
|
||||
{
|
||||
cache.SetString(Prefix + key, SimApiUtil.Json(value));
|
||||
}
|
||||
}
|
||||
|
||||
public string? Get(string key)
|
||||
{
|
||||
return cache.GetString(Prefix + key);
|
||||
}
|
||||
|
||||
public T? Get<T>(string key)
|
||||
{
|
||||
var data = cache.GetString(Prefix + key);
|
||||
return data == null ? default : JsonSerializer.Deserialize<T>(data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Hangfire.Dashboard;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace SimApi.Helpers;
|
||||
|
||||
public class SimApiJobWebAuth(string user, string pass) : IDashboardAuthorizationFilter
|
||||
{
|
||||
public bool Authorize(DashboardContext context)
|
||||
{
|
||||
var httpContext = context.GetHttpContext();
|
||||
var authHeader = httpContext.Request.Headers["Authorization"].FirstOrDefault();
|
||||
if (authHeader != null && authHeader.StartsWith("Basic "))
|
||||
{
|
||||
var encodedUsernamePassword = authHeader.Split(' ', 2, StringSplitOptions.RemoveEmptyEntries)[1]?.Trim();
|
||||
var decodedUsernamePassword = Encoding.UTF8.GetString(Convert.FromBase64String(encodedUsernamePassword));
|
||||
var username = decodedUsernamePassword.Split(':', 2)[0];
|
||||
var password = decodedUsernamePassword.Split(':', 2)[1];
|
||||
|
||||
if (username == user && password == pass)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
httpContext.Response.StatusCode = 401;
|
||||
httpContext.Response.Headers.WWWAuthenticate = "Basic realm=\"SimApiBasicAuth\"";
|
||||
httpContext.Response.WriteAsync("").Wait();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user