在我的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控制器。
答案 0 :(得分:12)
WebApi的System.Web.Http.AuthorizeAttribute与MVC的System.Web.Mvc.AuthorizeAttribute不同。
它之所以不能使用WebApi,是因为WebApi并不了解MVC类型。您需要创建一个为此目的继承System.Web.Http.AuthorizeAttribute的类型。