Я использовал приведенный ниже класс для управления запросом метода api и настройки некоторых свойств класса BaseController для общего использования в методах.это из Asp.Net Mvc Web Api
using 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
}
}