2008-11-30 40 views

回答

3

是,其可能的。您需要创建自己的ControllerActionInvoker并覆盖FindActionMethod成员。我会让基类执行它的工作,然后检查它返回的方法是否满足您的条件,如果没有,则返回更好的匹配。

我正在做这样的事情,让我的控制器有一个“默认行动”,它运作良好。查看MvcContrib及其ActionInvoker的实现,以获得一个非常好的示例。

1

我不这么认为。具有最佳参数匹配的控制器动作将被选中,然后这些属性将被应用。

你可以使用

if (Request.IsAuthenticated) 
{ 
    return "Authorized"; 
} 
else 
{ 
    return "Not Authorized"; 
} 

引擎盖下的[授权]基本上做同样的事情

protected virtual bool AuthorizeCore(IPrincipal user) 
{ 
    if (user == null) 
    { 
     throw new ArgumentNullException("user"); 
    } 

    if (!user.Identity.IsAuthenticated) 
    { 
     return false; 
    } 

    ...snip... 
}