我正在尝试在我的angularjs和Web api SPA中实现身份验证。我正在使用基于cookie的身份验证。这是LogIn控制器的代码-

if (ModelState.IsValid)
{
    if (_adMembershService.ValidateUser(model.Name, model.Password))
        {
            _formsAuthenticationService.SignIn(model.Name);
            return Json(GetUserClientContext(model.Name));
        }
    return Json("Incorrect Credentials");
}


如果用户在服务器上(表单身份验证)存在,那么我正在生成一个cookie并将其传递给响应。

public void SignIn(string email)
{
    //Part of the code is omitted
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
    HttpContext.Current.Response.Cookies.Add(cookie);
}


但是,我一直在努力理解该cookie怎么做,以及当用户成功登录后如何检查该cookie? Cookie是HttpOnly,因此无法使用JS代码进行检查,据我所知,这不是最佳方法。

因此,我不知道当用户下次访问该页面时,如何检查用户是否已登录。有人可以给我解释一下吗?

最佳答案

Cookie验证仅应在服务器上进行。在基本级别上,您想要(在每个请求上)检查是否发送了身份验证cookie,如果是,则对其进行验证。如果有效,则请求可能会得到满足;如果无效,则您拒绝该请求。 WebAPI具有[Authorize]属性,可用于装饰控制器,该属性将为您验证cookie。

有很多文档here

10-07 19:24
查看更多