我在 .NET 6 Core 中创建了自定义授权策略。它可以很好地满足我的要求,但是我在调试时发现错误 - 尚未为此应用程序或请求配置会话。但我已经在我的program.cs 中配置了会话。如果在调试中显示此错误,是否还需要为会话配置某些内容?
调试错误屏幕截图:https://pasteboard.co/RuiKarjvJPuP.png
授权处理程序:
using Microsoft.AspNetCore.Authorization;
namespace myApp.Security
{
public class CrudAccessHandler : AuthorizationHandler<AccessRequirement>
{
private readonly IHttpContextAccessor httpContextAccessor;
public CrudAccessHandler(IHttpContextAccessor httpContextAccessor)
{
this.httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessRequirement requirement)
{
string? controllerName = httpContextAccessor.HttpContext?.Request.RouteValues["controller"]?.ToString();
string? actionName = httpContextAccessor.HttpContext?.Request.RouteValues["action"]?.ToString();
if (controllerName != null && actionName != null)
{
if (context.User.HasClaim(claim => (claim.Type == controllerName && claim.Value == actionName)))
{
context.Succeed(requirement);
}
}
if (controllerName != …Run Code Online (Sandbox Code Playgroud)