【问题标题】:Best practise attaching token to request header in token based authentication在基于令牌的身份验证中将令牌附加到请求标头的最佳实践
【发布时间】:2014-06-27 22:56:36
【问题描述】:

我正在使用带有基于令牌的身份验证的 AngularJS,并且想知道您对通过将令牌附加到标头请求来为用户维护持久“会话”的最佳实践有何看法。让我描述一下我遇到的问题:

现在是这样设置的,但稍微简化了一点:

  1. 用户登录
  2. 后端返回包含令牌的用户对象,用户被视为已登录,令牌保存在本地存储中
  3. 用户刷新页面,加载页面并初始化 angular,没有返回用户对象和令牌,并且用户暂时不被视为已登录,因为没有令牌自动附加到用户的请求中
  4. 现在,一旦初始化 Angular,它就会检查本地存储中是否存在令牌,如果发现使用 httpInterceptor 向后端发出带有令牌附加到请求的 GET 请求,返回令牌并刷新令牌的用户对象,用户再次视为已登录

我想知道的是如何避免用户在第 4 步中退出的瞬间闪现。使用基于 cookie 的身份验证,这是可能的,因为 cookie 会自动附加到每个请求,因此我的后端可以在 cookie 返回之前反序列化它一个渲染模板作为响应,并在脚本标签内以 json 格式将用户对象附加到该渲染模板,然后 angular 可以在初始化时访问和加载,不会造成延迟。

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

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

我是不是在错误地处理这个问题?

【问题讨论】:

    标签: javascript angularjs authentication token access-token


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 2015-02-24
      相关资源
      最近更新 更多