Files
simapi-net/Helpers/SimApiJobWebAuth.cs
T

33 lines
1.2 KiB
C#
Raw Normal View History

2025-01-16 22:05:59 +08:00
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();
2025-11-03 21:41:35 +08:00
var authHeader = httpContext.Request.Headers.Authorization.FirstOrDefault();
2025-01-16 22:05:59 +08:00
if (authHeader != null && authHeader.StartsWith("Basic "))
{
2025-05-14 06:26:10 +08:00
var encodedUsernamePassword = authHeader.Split(' ', 2, StringSplitOptions.RemoveEmptyEntries)[1].Trim();
2025-01-16 22:05:59 +08:00
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;
}
}