我正在尝试将一些旧代码移植到 .Net Core 3。
使用旧的 AuthorizeAttibutes,您可以通过 HttpActionContext 获取 Action 的动词
var verb = actionContext.Request.Method.Method;
在 Core 3.0 中,HttpActionContext 现在已更改为 AuthorizationHandlerContext。
我看过一些帖子提到使用:
var filterContext = context.Resource as AuthorizationFilterContext;
var httpMethod = filterContext.HttpContext.Request.Method;
但在 .Net Core 3 中,我没有在 context.Resource 上看到普通控制器或 api 控制器的 AuthorizationFilterContext 。
关于如何获得动作请求中使用的动词的任何想法/指示?
编辑:所以在@xing-zou 的帮助下,我能够执行以下 POC 以获取唯一的路由键,我可以将它与我在数据库中的路由和分配给它们的角色进行比较。
如果用户属于与路由关联的角色,则用户将获得访问权限,否则 403 Forbidden
public class AccessToRouteHandler : AuthorizationHandler<AccessToRouteRequirement>
{
private readonly IHttpContextAccessor httpContextAccessor;
private readonly DbContext dbContext;
public AccessToRouteHandler(IHttpContextAccessor httpContextAccessor, DbContext dbContext)
{
this.httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
this.dbContext = …
Run Code Online (Sandbox Code Playgroud)