2013-08-27 48 views
8

Tôi muốn sử dụng công cụ Meteor.loginWithGoogle() để xác thực người dùng, nhưng có cách nào giới hạn miền đó cho một miền cụ thể (Google Apps) không?Giới hạn Meteor.js được tích hợp sẵn trong Google xác thực cho miền

Tôi có thể kiểm tra sau khi người dùng được xác thực bằng email được trả lại, nhưng có cách nào để thực hiện việc này ở giai đoạn đăng nhập với một số thông số cho thông tin đăng nhập của Google không?

+0

Ý của bạn là gì bằng cách "giới hạn nó thành một miền cụ thể"? Bạn có nghĩa là bạn chỉ muốn người dùng gmail có địa chỉ .com hoặc .co.uk? Hoặc bạn có nghĩa là ứng dụng của bạn chạy trên nhiều tên miền và bạn chỉ muốn google auth hoạt động trên một trong những tên miền đó? Thứ gì khác? – BenjaminRH

+0

Tôi có nghĩa là miền Google Apps, do đó bạn chỉ được phép đăng nhập bằng tài khoản @ .com chứ không phải với bất kỳ tài khoản Google nào khác. – kennysong

Trả lời

9

Tôi không nghĩ rằng nó có thể ngay bây giờ. Có một yêu cầu kéo để thêm một phần chức năng đó: https://github.com/meteor/meteor/pull/1332 Vấn đề với yêu cầu kéo đó dường như chỉ sửa lỗi phía máy khách (nghĩa là nó chỉ hiển thị tài khoản từ miền đã chọn khi người dùng đăng nhập). Nhưng nó không thêm bất kỳ kiểm tra phía máy chủ.

Im sử dụng workaround sau: Trong một tập tin .js trong thư mục sever Tôi có đoạn mã sau:

Accounts.validateNewUser(function (user) { 
    if(user.services.google.email.match(/example\.org$/)) { 
     return true; 
    } 
    throw new Meteor.Error(403, "You must sign in using a example.org account"); 
}); 

Điều này ngăn cản các tài khoản từ đang được thực hiện cho các lĩnh vực khác nhau từ example.org.

+7

Nó được xây dựng trong: 'Accounts.config ({restrictCreationByEmailDomain: 'mydomain.com'})' – Jaap

1

Nếu bạn chỉ muốn cho phép một số người dùng nhất định từ miền của mình, bạn cũng có thể thêm bộ sưu tập danh sách trắng xác định id người dùng từ tài khoản Google Apps của mình. Bằng cách này, bạn có thể giới hạn quyền truy cập chỉ cho một số người dùng nhất định, nhận chức năng đăng nhập một lần và có thể đặt trước vai trò người dùng và thuộc tính cho ứng dụng của mình trước khi người dùng thậm chí tạo tài khoản của họ.

Sử dụng gọi lại Accounts.onCreateUser(function(options, user){}) vì điều đó cho phép bạn xác định thuộc tính người dùng bổ sung.