我正在尝试在我的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