我想解密請求并按屬性加密結果。為此,我在下面撰寫了 CheckFilter 屬性。但是我需要進行依賴注入才能在其中使用 IHashService 服務。我還想發送一個帶有屬性的值,因為它在 Get 方法中使用。但我不知道該怎么做。
public class CheckFilter : Attribute, IResourceFilter
{
private readonly IHashService _hashService;
public CheckFilter(IHashService hashService)
{
_hashService = hashService;
}
public void OnResourceExecuting(ResourceExecutingContext context)
{
//Decrypt
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
//Encrypt
}
}
[HttpGet]
[CheckFilter("test")]
public string Get(string request)
{
return "hello";
}
uj5u.com熱心網友回復:
如果要在過濾器屬性中獲取服務,可以使用服務位置通過 RequestServices.GetService 從內置 IoC 容器中決議組件。
更多細節,您可以參考以下代碼:
public class ThrottleFilterAttribute : Attribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
var cache = context.HttpContext.RequestServices.GetService<IDistributedCache>();
...
}
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/440813.html
