ASP.net MVC Web API,基于会话/ Cookie的auth来自网络应用程序

时间:2014-10-16 23:10:47

标签: c# asp.net asp.net-mvc authentication asp.net-web-api

我正在使用本地身份验证构建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错误。我该如何改变这种行为?

1 个答案:

答案 0 :(得分:0)

删除授权属性并执行类似

的操作
if (!WebSecurity.IsAuthenticated)
{
    return this.Request.CreateResponse(HttpStatusCode.Unauthorized, "");
}
return this.Request.CreateResponse(HttpStatusCode.OK, yourobject);

并将返回类型更改为HttpResponseMessage;