我正在使用本地身份验证构建ASP.net MVC Web App。我想添加一些Web API端点,不是为了外部使用,而是纯粹供我自己页面上的jQuery AJAX调用使用。所以我添加了一个Web API控制器。
为了整合身份验证,我可以这样做:
[Authorize]
public IQueryable<object> GetLabels(int ModuleId)
{
return db.Labels.Select(x => new { ID = x.ID, Name = x.Name, ModuleID = x.ModuleId }).Where(x => x.ModuleID == ModuleId );
}
这提供了所需的行为。但是,我遇到一个问题:当以注销用户身份访问API时,它会以登录页面的HTML响应进行响应。
我宁愿用一个小的JSON对象来回应,给出错误或401错误。我该如何改变这种行为?
答案 0 :(得分:0)
删除授权属性并执行类似
的操作if (!WebSecurity.IsAuthenticated)
{
return this.Request.CreateResponse(HttpStatusCode.Unauthorized, "");
}
return this.Request.CreateResponse(HttpStatusCode.OK, yourobject);
并将返回类型更改为HttpResponseMessage;