2014-10-16 73 views
0

我正在用本地身份验证构建ASP.net MVC Web应用程序。我想添加一些Web API端点,而不是外部使用,但纯粹是为了在我自己的页面上使用jQuery AJAX调用。所以我添加了一个Web API控制器。基于会话/ Cookie的ASP.net MVC Web API基于Web应用程序的身份验证

为了验证整合,我可以做这样的事情:

[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

摆脱授权属性,并完成类似

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

,并更改返回类型HttpResponseMessage;

+0

我不认为这有效。什么是回应? – ian93 2014-10-17 00:09:29

+0

@ ian93 sry和编辑 – Steve 2014-10-17 00:17:22

+0

,但如果我将响应类型更改为HttpResponseMessage,响应不可序列化为JSON显然...嗯... – ian93 2014-10-17 00:22:06

相关问题