最佳做法是在基于令牌的身份验证中将令牌附加到请

时间:2014-05-10 05:41:06

标签: javascript angularjs authentication token access-token

我正在使用基于令牌的身份验证的AngularJS,并希望通过将标记附加到标头请求来了解对用户维持持久“会话”的最佳做法的意见。让我来描述一下我遇到的问题:

这就是现在的设置,但略有简化:

  1. 用户登录
  2. backend返回包含令牌的用户对象,用户被视为已登录,令牌已保存在本地存储中
  3. 用户刷新页面,加载页面并初始化角度,不返回用户对象和令牌,暂时不认为用户已登录,因为没有令牌自动附加到用户的请求
  4. 现在,只要初始化了角度,它就会检查localstorage中令牌的存在,如果找到,则使用httpInterceptor通过附加到请求的令牌向后端发出GET请求,返回令牌的用户对象和令牌刷新,用户再次被视为已登录
  5. 我想知道的是如何避免在步骤4中注销用户的瞬间闪现。使用基于cookie的身份验证这是可能的,因为cookie会自动附加到每个请求,因此我的后端可以在cookie返回之前反序列化响应中呈现的模板,并在脚本标记内以json格式将用户对象附加到该呈现的模板,然后该角度可以在初始化时访问和加载,从而没有延迟。

    令牌的问题是,虽然它存在于客户端的localStorage上,但在刷新页面时它不会自动附加到请求。仅当用户在角度初始化之后发出http请求时它才被附加,并且它已经附加了它的httpInterceptor,它附加了包含令牌的额外头部字段。

    因此,可以始终自动将存储在localStorage中的令牌附加到每个请求的标头,或者是我当前的方法。我想我可以将令牌存储在cookie中,但这确实会破坏基于令牌的身份验证的目的。

    我接近这个错误吗?

1 个答案:

答案 0 :(得分:0)

在我看来,您的方法是正确的,但您应检查令牌并在resolve phase of your routes中调用的服务初始化期间刷新它。 这应该可以防止初始闪光