如何将经过身份验证的ajax调用发送到Web API

时间:2015-07-23 18:39:18

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

我有一个Web Api应用程序,它有以下问题。

 [HttpGet]
    [Route("Account/userName{userName}/password={password}/rememberMe/{rememberMe}")]
    public HttpResponseMessage LogIn(string userName, string password, bool rememberMe)
    {
        if (User.Identity.IsAuthenticated)
        {
            return Request.CreateResponse(HttpStatusCode.Conflict, "already logged in.");
        }

        var dbPerson = dbContext.Persons.Where(x => x.UserName.Equals(userName) && x.EncryptedPassword.Equals(password)).FirstOrDefault();
        if (dbPerson != null)
        {
            FormsAuthentication.SetAuthCookie(userName, rememberMe);
            return Request.CreateResponse(HttpStatusCode.OK, "logged in successfully");
        }
        else
        {
            return new HttpResponseMessage(HttpStatusCode.Unauthorized);
        }
    }

我在另一个MVC项目中打电话。我得到了身份验证,但下一页我调用了ajax方法

var uri ='http://localhost:44297/api/XXXX';

$(document).ready(function () {
  // Send an AJAX request
  $.getJSON(uri)
      .done(function (data) {
        // On success, 'data' contains a list of products.

          for (var i = 0; i < data.$values.length; i++)
          {      


             }
    })
    .fail(function() {
        console.log( "error" )});


});

我得到GET http://localhost:44297/api/StudyFocus 401(未经授权)。我怎么能解决这个问题。我知道我需要通过这个ajax调用传递一些cookie / session值。但我不知道怎么做。任何人都可以用例子解释我。

我的应用程序依赖于包含身份验证的Web Api项目。我需要使用表单身份验证使web api应用程序安全。任何帮助都非常值得赞赏。感谢

1 个答案:

答案 0 :(得分:0)

您无法通过使用Cookie或会话对Web API进行身份验证。您需要访问令牌来执行此操作。

按照本教程进行实施http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api