【问题标题】:Get loop when check cookie in angularjs在angularjs中检查cookie时获取循环
【发布时间】:2015-06-23 07:04:17
【问题描述】:

这是我在客户端的代码。我想要达到的目标非常清楚。如果用户有 cookie,它就会被认证,否则它会被重定向到服务器上的 auth 端点

(function() {
  'use strict';

  angular
    .module('App', [
      'ui.router',
      'ngResource',
      'ngCookies'        ])
    .run(['$window', '$cookies', '$state', function($window, $cookies, $state) {

      if($cookies['cookie-app']) {
        console.log('authenticated');
      } else {
        $window.location.href = "http://" + $window.location.host + "/auth/facebook";
      }
    }]);
})();

这是服务端使用Hapijs制作的代码

module.exports = function(request, reply) {

  if (request.auth.isAuthenticated) {
    console.log(request.auth.credentials.profile.raw);
    request.auth.session.set(request.auth.credentials.profile.raw);
    return reply.redirect('http://localhost:8080');
  }

  reply('Not logged in').code(401);
};

cookie 设置正确,但在 if 中我没有得到 true,然后我得到一个无限循环。我的情况如下。 nginx 提供 angularjs 文件,它充当 hapijs 服务器的反向代理。

你知道为什么吗?

【问题讨论】:

  • 你的意思是'但是如果我不明白'?你真的需要重定向用户吗?不能只用ajax来设置cookie吗?
  • 我的意思是条件永远不会被解析为真,然后客户端循环调用服务器端点。我在服务器端设置cookie。
  • 身份验证发生在服务器端。然后将 cookie 保存在服务器端,客户端只需要检查它的存在即可
  • 上次我尝试在 Angular 中使用 $cookies 时,我对它感到非常恼火,以至于我选择了一个 jQuery 插件来处理它们。所以我不知道,也许 $cookies 只是有点问题。

标签: javascript angularjs node.js cookies hapijs


【解决方案1】:

需要在hapi-auth-cookie的选项上禁用httpOnly标志

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2016-01-04
    相关资源
    最近更新 更多