HuanMengAdmin/admin-server/MiaoYu.Shared/Configures/CustomPolicyRequirement.cs
2024-07-19 02:05:38 +08:00

40 lines
1.1 KiB
C#

namespace MiaoYu.Shared.Configures;
public class CustomPolicyRequirement : IAuthorizationRequirement
{
/// <summary>
/// 权限认证键
/// </summary>
public string? AuthKey { get; }
public CustomPolicyRequirement(string authKey)
{
AuthKey = authKey;
}
}
public class CustomAuthorizationHandler : AuthorizationHandler<CustomPolicyRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomPolicyRequirement requirement)
{
//获取当前http请求的context对象
var authContext = context.Resource as AuthorizationFilterContext;
if (authContext != null)
{
if (!authContext.HttpContext.Request.Headers.ContainsKey(requirement.AuthKey))
{
context.Fail();
}
else
{
context.Succeed(requirement); //通过验证,这句代码必须要有
}
}
else
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}