自定义授权属性不工作asp.net

时间:2015-03-19 13:29:42

标签: c# asp.net-mvc authorize-attribute

在我的c#app中,我添加了一个像这样的自定义属性

public class CheckLogIn : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (!httpContext.Request.IsAuthenticated)
            return false;
        return (Auth.UserLoggedIn || Auth.AdminLoggedIn);
    }
}

我正在调用这个属性

[CheckLogIn]
public dynamic Create(String projectName, String organizationId)
{
    Project pro = Project.Create(organizationId, projectName).Save();

    return new
    {
        organizationId = pro.OrganizationId,
        name = pro.Name,
        id = pro.Id
    };
}

未调用AuthorizeCore。我有一个突破点,但似乎它永远不会被调用。我在这里错过了什么吗?

我试过从它不起作用的常规控制器调用[CheckLogIn],从它没有的api控制器。

1 个答案:

答案 0 :(得分:12)

WebApi的System.Web.Http.AuthorizeAttribute与MVC的System.Web.Mvc.AuthorizeAttribute不同。

它之所以不能使用WebApi,是因为WebApi并不了解MVC类型。您需要创建一个为此目的继承System.Web.Http.AuthorizeAttribute的类型。