我创建了一个自定义 动作过滤器 没问题。
但我想修改Action Filter以使用实际传递给我的方法的一些参数。
所以,如果我有以下方法:
[HttpPost]
[MyAttribute]
public ActionResult ViewUserDetails(Guid userId)
{
// Do something
}
如何从内部访问userId MyAttribute
?有没有办法可以直接传递它?
我创建了一个自定义 动作过滤器 没问题。
但我想修改Action Filter以使用实际传递给我的方法的一些参数。
所以,如果我有以下方法:
[HttpPost]
[MyAttribute]
public ActionResult ViewUserDetails(Guid userId)
{
// Do something
}
如何从内部访问userId MyAttribute
?有没有办法可以直接传递它?
你可以试试 OnActionExecuting
覆盖,您可以访问操作参数。
public class MyAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionParameters.ContainsKey("userId"))
{
var userId = filterContext.ActionParameters["userId"] as Guid;
if (userId != null)
{
// Really?! Great!
}
}
}
}
您可以创建派生自的自定义属性 FilterAttribute
和工具 IAuthorizationFilter
。
您还应该能够获取用户信息 OnAuthorization
方法通过访问 filterContext.HttpContext.User.Identity
无需传递用户标识。