2014-06-13 12 views
11

Tôi đang tạo một ứng dụng góc với phụ trợ vòng lặp mạnh mẽ.Đăng nhập bằng facebook trong ứng dụng góc với phụ trợ vòng lặp

Ngoài ra tôi tích hợp thông tin đăng nhập của bên thứ ba bằng facebook sử dụng mô-đun loopback-hộ chiếu.

mọi thứ đều ổn trong vòng lặp-ví dụ-hộ chiếu và mọi thứ đều ổn trong ứng dụng của tôi ngay trước thời điểm chuyển hướng đến ứng dụng của tôi. Đã tạo người dùng và mã thông báo Access.

mã:

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

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

hoạt động tốt. Nhưng tôi không thể hiểu được. làm thế nào để cung cấp cho nhà nước xác thực để ứng dụng góc của tôi.

tôi đã cố gắng để làm cho một bộ điều khiển để định tuyến '/ # 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('/'); 
    }) 

Mã này tạo ra một yêu cầu GET/api/người dùng/2 nhưng nhận được 401 lỗi.

Nếu tôi chỉnh /loopback/lob/models/user.js tập tin thiết lập cho phép:

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

Sau đó yêu cầu GET/api/người dùng/2 nhận 200 và tất cả mọi thứ ok.

Tôi hơi bối rối. Tôi không thể hiểu làm thế nào để làm cho ứng dụng góc của tôi xác thực với loopback, mặc dù tôi biết access-token và userId

Có ai có ý tưởng làm thế nào để làm điều đó?

Trả lời

8

Đây là mã hợp lệ.

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'); 
}); 

Vấn đề là dấu hiệu loopback-hộ chiếu cookie:

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

Trong chuỗi nó trông giống như sau "s: .eBvo8bpo9Q9wnNrPjjlG% 2FAcYqWkxEgNFqn% 2FO54rdGwY"

Nhưng loopback-góc chỉ cần sao chép mã thông báo truy cập vào header.authorization, vì vậy chúng tôi cần đặt cookie đó ở chế độ đồng bộ.

+0

Ai đó có thể chia sẻ một ứng dụng mẫu cho việc này không? Cảm ơn bạn! – imesh

Các vấn đề liên quan