通过带有环回后端的角应用程序登录facebook

 落可可lookeke 发布于 2023-01-09 12:39

我正在使用strongloop loopback后端进行角度应用.

我还使用loopback-passport模块通过facebook整合第三方登录.

在loopback-example-passport中一切都很好,在重定向到我的应用程序之前,我的应用程序中的一切都很好.已创建用户和访问令牌.

代码:

app.get('/auth/login', ensureLoggedIn('/#login'), function(req, res, next) {
    console.log('LOOGED IN!!');
console.log(req.user);

  res.redirect('/#auth/login');
});

工作良好.但我无法理解.如何为我的角度应用程序提供经过身份验证的状态

我试图让控制器路由'/#auth/login':

.controller('AuthCalbackCtrl', function($scope, $cookies, $location, AppAuth, $http, User, LoopBackAuth) {
//analogue of User.login responce interceptor
   LoopBackAuth.currentUserId = $cookies['userId'] || null;
   LoopBackAuth.accessTokenId = $cookies['access-token'] || '';
   LoopBackAuth.rememberMe = false;
   LoopBackAuth.save();
   //asking for currentUser
   User.getCurrent(function(user) {
     console.log('ser.getCurrent ', user);
   });
   $location.path('/');
  })

此代码发出请求GET/api/users/2但收到401错误.

如果我调整文件/loopback/lob/models/user.js设置权限:

  principalType: ACL.ROLE,
  // principalId: Role.OWNER,
  principalId: Role.EVERYONE,
  permission: ACL.ALLOW,
  property: "findById"

然后请求GET/api/users/2接收200并且一切正常.

我有点困惑.虽然我知道access-token和userId,但我无法理解如何使我的角度应用程序进行身份验证以进行环回

有任何想法怎么做?

1 个回答
  • 这是一个有效的代码.

    app.get('/auth/login', function(req, res, next) {
      //workaround for loopback-password 
      //without this angular-loopback would make incorrect authorization header
      res.cookie('access-token', req.signedCookies['access-token']);
      res.cookie('userId', req.user.id);
      res.redirect('/#auth/login');
    });
    

    问题是loopback-passport签名cookie:

             res.cookie('access-token', info.accessToken.id, { signed: true,
               maxAge: info.accessToken.ttl });
    

    在字符串中,它看起来类似于以下"s:.eBvo8bpo9Q9wnNrPjjlG%2FAcYqWkxEgNFqn%2FO54rdGwY"

    但是loopback-angular只是将访问令牌复制到header.authorization,所以我们需要放置纯cookie.

    2023-01-09 12:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有