我有一个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应用程序安全。任何帮助都非常值得赞赏。感谢
答案 0 :(得分:0)
您无法通过使用Cookie或会话对Web API进行身份验证。您需要访问令牌来执行此操作。
按照本教程进行实施http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api