【问题标题】:How to validate cookie with ASP.NET Web API + AngularJs cookie based authentication如何使用基于 ASP.NET Web API + AngularJs cookie 的身份验证来验证 cookie
【发布时间】:2015-10-30 01:47:40
【问题描述】:

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

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 代码检查它,据我所知,这不是最好的方法。

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

【问题讨论】:

    标签: javascript c# angularjs cookies asp.net-web-api


    【解决方案1】:

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

    有很多文档here

    【讨论】:

    • 谢谢!我正在考虑验证自定义属性中的 cookie,就像在这个例子中一样 - stackoverflow.com/questions/12672335/… 但是我不确定,而不是重定向,我可以以某种方式在自定义属性中传递 JSon 对象吗?
    猜你喜欢
    • 2014-05-28
    • 2021-08-09
    • 2020-10-08
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2011-08-19
    • 2020-01-23
    • 2021-08-13
    相关资源
    最近更新 更多