在ASP.NET Core 2.2中,可以通过以下步骤传递参数给授权策略:
CustomAuthorizationHandler
的类:public class CustomAuthorizationHandler : AuthorizationHandler
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomRequirement requirement)
{
// 处理传递的参数
var parameter = context.Resource as string;
// 在这里实现自定义的授权逻辑
// ...
// 根据授权结果,调用Succeed或Fail方法
if (authorizationSucceed)
{
context.Succeed(requirement);
}
else
{
context.Fail();
}
return Task.CompletedTask;
}
}
Startup.cs
文件的ConfigureServices
方法中,注册自定义的授权策略处理程序:services.AddAuthorization(options =>
{
options.AddPolicy("CustomPolicy", policy =>
{
policy.Requirements.Add(new CustomRequirement());
});
});
services.AddSingleton();
CustomRequirement
的类:public class CustomRequirement : IAuthorizationRequirement
{
// 可以在此类中定义需要的参数
}
[Authorize(Policy = "CustomPolicy")]
public IActionResult MyAction(string parameter)
{
// 在此处使用传递的参数
return View();
}
在这个示例中,我们将传递的参数作为context.Resource
,并在自定义的授权处理程序中进行处理。您可以根据需要修改自定义授权处理程序中的逻辑来实现您的授权要求。