自定义AuthorizeAttribute没有做任何事情

问题描述

我有一个带有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 (将#修改为@)