是否有可能在ASP.NET MVC中有这样的东西......
[Authorize]
[AcceptVerbs(HttpVerbs.Get)]
public string AddData(string Issues, string LabelGUID)
{
return "Authorized";
}
[AcceptVerbs(HttpVerbs.Get)]
public string AddData()
{
return "Not Authorized";
}
因此,如果用户未登录,则默认为未授权操作。
答案 0 :(得分:3)
是的,它可能。您需要创建自己的ControllerActionInvoker
并覆盖FindActionMethod
成员。我让基类做它的工作然后检查它返回的方法是否满足你的标准,如果没有,返回更好的匹配。
我正在做这样的事情,让我的控制器有一个“默认动作”,它运作良好。查看MvcContrib及其ActionInvoker的实现,这是一个非常好的例子。
答案 1 :(得分: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...
}