小编Kie*_*iet的帖子

.Net Core 3 自定义授权策略 - 访问动作动词

我正在尝试将一些旧代码移植到 .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)

authorization asp.net-core

5
推荐指数
1
解决办法
2183
查看次数

标签 统计

asp.net-core ×1

authorization ×1