【问题标题】:ASP.net MVC Web API with Session/Cookie based auth from web appASP.net MVC Web API,带有来自 Web 应用程序的基于会话/Cookie 的身份验证
【发布时间】:2014-10-16 23:10:47
【问题描述】:

我正在构建一个带有本地身份验证的 ASP.net MVC Web 应用程序。我想添加一些 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 错误。我该如何改变这种行为?

【问题讨论】:

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


    【解决方案1】:

    摆脱 Authorized 属性并执行类似的操作

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

    并将返回类型改为HttpResponseMessage;

    【讨论】:

    • 但是如果我将响应类型更改为 HttpResponseMessage,响应显然不能序列化为 JSON...嗯...
    • @ian93 然后自己序列化它,比如 JavaScriptSerializer 或 Newton.JsonSerializer
    猜你喜欢
    • 1970-01-01
    • 2014-05-28
    • 2019-10-19
    • 2015-09-05
    • 1970-01-01
    • 2012-10-31
    • 2020-03-04
    • 2014-01-26
    • 2015-09-17
    相关资源
    最近更新 更多