base
我的应用程序中有针对每个请求的课程:
public abstract class BaseDto
{
public string Uid { get; set; }
}
public class RequestDto : BaseDto
{
public string SomeData { get; set; }
}
我ReuqestDto
在控制器动作中使用我的课程:
[HttpGet]
public IEnumerable<string> Get(RequestDto req)
{
// some logic on request
if (req.Uid != null)
{
// perform action
}
}
用户仅将SomeData
属性传递给我。在我的JWT令牌我已经保存的一些信息Uid
的BaseDto
。Uid
使用中间件/过滤器将数据写入我的Get()
方法中的最佳方法是什么?我尝试序列化HttpContext.Request.Body
但未成功,因为我找不到如何正确执行操作。也许对于这个问题有更好的解决方案?如何将数据写入应用程序中的传入对象?
这可能就是您想要的。
您应该为这样的模型创建自己的接口
public interface IMyRequestType { }
您的模型应该实现它以便在FilterAttribute中查找模型
public class MyModel : IMyRequestType
{
public string ID { get; set; }
}
并通过OnActionExecuting
充实的方式创建过滤器属性
public class MyFilterAttribute : TypeFilterAttribute
{
public MyFilterAttribute() : base(typeof(MyFilterImpl)) { }
private class MyFilterImpl : IActionFilter
{
private readonly ILogger _logger;
public MyFilterAttributeImpl(ILoggerFactory loggerFactory)
{
// get something from DI
_logger = loggerFactory.CreateLogger<MyFilterAttributeImpl>();
}
public void OnActionExecuting(ActionExecutingContext context)
{
// get your request model
var model = context.ActionArguments.Values.OfType<IMyRequestType>().Single();
// get your key
//context.HttpContext.User or whatever
// do something with model
}
public void OnActionExecuted(ActionExecutedContext context)
{
// perform some logic work
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句