问题描述
我有一个带有ApiController
的Asp.Net Mvc4应用程序,如下所示:
(PS:我过分简化了逻辑以避免不必要的解释。想像一下该操作返回一个对象数组)
public class StudentsController : ApiController {
public IEnumerable<string> Get() {
return new string[] {"student 1","student 2" };
}
}
现在,我想保护控制器,以便只有管理员才能调用控制器中的操作。因此,我创建了以下自定义AuthorizeAttribute
:
public class OnlyAdminsAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(HttpContextBase httpContext) {
// base.AuthorizeCore(httpContext);
// Todo: check if httpContext User is an admin
// return IsAdmin(httpContext.User.Identity.Name);
return false; // this should prevent everyone,even admins
}
}
[OnlyAdmins]
public class StudentsController : ApiController {
...
}
我没有错误地构建并运行了项目,但是控制器正常运行。我期望该请求将被拒绝或阻止,因为我将为所有用户返回一个可靠的false
。我什至为HandleUnauthorizedRequest()
添加了替代,但这也不起作用。
我在行return false;
上添加了一个断点,但从未被击中。
我终于在OnlyAdminsAttribute
中添加了一个构造函数,并确保构造函数中的代码正在执行。但是我应该从构造函数中调用AuthorizeCore()
吗?
我认为我不应该这样做。
我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)