我创建了一个自定义的Action Filter,没有问题。
但是我想修改Action过滤器,以使用一些实际传递给我的方法的参数。
因此,如果我有以下方法:
[HttpPost]
[MyAttribute]
public ActionResult ViewUserDetails(Guid userId)
{
// Do something
}如何从MyAttribute中访问userId?有没有办法可以直接传进去呢?
发布于 2012-08-31 02:51:20
您可以尝试OnActionExecuting override,在那里您确实可以访问操作参数。
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!
}
}
}
} 发布于 2012-08-31 02:45:40
您可以创建从FilterAttribute派生并实现IAuthorizationFilter的自定义属性。
您还应该能够通过访问filterContext.HttpContext.User.Identity来获取OnAuthorization方法中的用户信息,而不需要传递userid。
https://stackoverflow.com/questions/12203329
复制相似问题