为了账号安全,请及时绑定邮箱和手机立即绑定

在 AuthorizeAttribute Mvc Core Web Api 中获取控制器实例

在 AuthorizeAttribute Mvc Core Web Api 中获取控制器实例

C#
qq_遁去的一_1 2021-07-22 16:17:16
我使用下面的类来控制我的 api 方法请求并设置 BaseController 类的一些属性以在方法中常用。这是来自 Asp.Net Mvc Web Apiusing System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Http;using System.Web;using System.Web.Http;using System.Web.Http.Controllers;[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]public class AuthUserAttribute : AuthorizeAttribute{    private string Action { get; set; }    public AuthUserAttribute(string action)    {        this.Action = action;    }    public override void OnAuthorization(HttpActionContext actionContext)    {        BaseController baseController = httpContext.ControllerContext.Controller as BaseController;        baseController.someCommenProperty = someValue;    }}但是当我尝试在 Asp.Net Mvc Core Api 中实现相同的结构时,我无法到达初始化的控制器实例。有什么办法可以得到那个实例。使用 Microsoft.AspNetCore.Authorization;using Microsoft.AspNetCore.Mvc.Filters;using Microsoft.Extensions.Primitives;using System;using System.Linq;[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]public class AuthUserAttribute : AuthorizeAttribute, IAuthorizationFilter{    private string Action { get; set; }    public AuthUserAttribute(string action)    {        this.Action = action;    }    public void OnAuthorization(AuthorizationFilterContext context)    {        // how to get controller instance from context    }}
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以使用context.ActionDescriptor获取有关控制器的类型信息。
控制器对象在授权检查时可能根本没有实例化。
您还可以IActionFilter在其中实现和使用控制器实例

public void OnActionExecuting(ActionExecutingContext context)

public void OnActionExecuted(ActionExecutingContext context)


查看完整回答
反对 回复 2021-07-31
  • 1 回答
  • 0 关注
  • 357 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信