Hóa ra phiên bản ember-simple-auth tôi đã sử dụng đã lỗi thời và cần nâng cấp lên 0.3.x (từ 0.2.x). Từ đó, tôi đã có thể thêm một trình xác thực tùy chỉnh mà tôi đã lấy gần như trực tiếp từ các tệp mẫu của dự án. Lưu ý rằng tôi đang sử dụng phiên bản Ember 1.6.0 beta 2.
Với mã bên dưới, tôi có thể truy cập CurrentUser trong các tuyến và bộ điều khiển bằng cách sử dụng this.get('session.currentUser')
hoặc trong các mẫu sử dụng {{session.currentUser}}
.
Thay đổi duy nhất tôi phải thực hiện cho API của mình là bao gồm user_id
với phản hồi OAuth.
cập nhật từ các câu trả lời trước để hỗ trợ 0.4.0
Sau đó, tôi được cập nhật initializer của tôi là như sau:
App.initializer({
name: 'authentication',
initialize: function(container, application) {
Ember.SimpleAuth.Authenticators.OAuth2.reopen({
serverTokenEndpoint: '/api/oauth/token'
});
Ember.SimpleAuth.Session.reopen({
currentUser: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return container.lookup('store:main').find('current-user', userId);
}
}.property('user_id')
});
Ember.SimpleAuth.setup(container, application, {
authorizerFactory: 'ember-simple-auth-authorizer:oauth2-bearer',
routeAfterAuthentication: 'main.dashboard'
});
}
});
điều khiển đăng nhập của tôi bây giờ trông như thế này:
export default Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin, {
authenticatorFactory: 'ember-simple-auth-authenticator:oauth2-password-grant'
});
Nguồn
2014-05-08 01:53:12
Đây là vàng tuyệt đối! Tôi đã đấu tranh để tìm một cách tốt để làm điều này với ember-đơn giản-auth trong nhiều tháng. Điều này thực sự phải là một phần của tài liệu (nếu không phải là việc thực hiện tiêu chuẩn). – opsb
@opsb Tôi vừa cập nhật câu trả lời của tôi bởi vì nó có thể được đơn giản hóa nhiều hơn sau khi phát hành gần đây của ember-simple-auth. Trình xác thực tùy chỉnh không còn cần thiết nữa. –
đẹp, trông đẹp hơn. – opsb