1

ember-cli と Rails API バックエンドを使用して OAuth2 クライアント資格情報フローをセットアップしようとしましたが、行き止まりになりました。多分私はemberに慣れていないからです。私が現在やろうとしていることはこれです:

bower.json
{
    "ember-simple-auth": "*"
}

Brocfile.js
app.import('vendor/ember-simple-auth/simple-auth.amd.js')
app.import('vendor/ember-simple-auth/simple-auth-oauth2.amd.js')

initializers/login.js
App.initializer({
  name: 'Register Components',
  initialize: function(container, application) {
    registerComponents(container);
    Ember.SimpleAuth.setup(application);
  }
});

controllers/login.js
import LoginControllerMixin from 'simple-auth/mixins/login-controller-mixin';

export default Ember.Controller.extend(SimpleAuth.LoginControllerMixin, {
  authenticatorFactory: 'simple-auth-authenticator:oauth2-password-grant'
});

templates/login.hbs
<form {{action authenticate on='submit'}}>
  <label for="identification">Login</label>
  {{view Ember.TextField id='identification' valueBinding='identification' placeholder='Enter Login'}}
  <label for="password">Password</label>
  {{view Ember.TextField id='password' type='password' valueBinding='password' placeholder='Enter Password'}}
  <button type="submit">Login</button>
</form>

この点に関するガイド、チュートリアル、または修正は大歓迎です。

4

4 に答える 4

1

私は最近、これについて GitHub で議論しました。これは、HTTP 基本認証 (app/app.js 内) を使用してクライアントを認証するために最終的に行ったことです。

import OAuth2Authenticator from 'simple-auth-oauth2/authenticators/oauth2';

OAuth2Authenticator.reopen({
  makeRequest: function(data) {
    var clientId = MyProjectENV.APP.apiClientId;
    var clientSecret = MyProjectENV.APP.apiClientSecret;
    return Ember.$.ajax({
      url:         this.serverTokenEndpoint,
      type:        'POST',
      data:        data,
      dataType:    'json',
      contentType: 'application/x-www-form-urlencoded',
      headers:     { "Authorization": "Basic " + btoa(clientId + ":" + clientSecret) }
    });
  }
});

そして config/environment.js で:

var ENV = {
  // ...
  APP: {
    apiClientId: "12345",
    apiClientSecret: "abcdefg987654"
  }
于 2014-06-29T22:44:54.337 に答える
1

Ember Simple Auth の最新リリースでは、イニシャライザを定義する必要がなくなり、ライブラリ用の Ember CLI アドオンが追加されたため、すべての設定がはるかに簡単になりました。また、README と API ドキュメントは、Ember CLI でライブラリを使用することに焦点を当てているため、非常に役立ちます。

README を確認してください: https://github.com/simplabs/ember-simple-auth#readme

于 2014-06-26T08:18:23.670 に答える
-1

marcoow の多大な努力のおかげで、今では Ember-Simple-Auth は client_it を追加する簡単な方法をサポートしています!

clientId の値は、ESA によってデフォルトのオーセンティケーターで null に設定されます (ファイルnode_modules/esa/addon/authenticator/oauth2-password-grant.js を参照) 。

カスタム サーバー トークン エンドポイントをオーバーライドするのと同じ方法で、カスタム オーセンティケーターの値をオーバーライドできます。

// app/authenticators/oauth2.js
import OAuth2PasswordGrant from 'ember-simple-auth/authenticators/oauth2-password-grant';
import ENV from '../config/environment';

export default OAuth2PasswordGrant.extend({
  serverTokenEndpoint: `${ENV.api.host}/oauth/token`,
  clientId: `${ENV.APP.apiClientId}`,
});

esaに関するこのgithub ディスカッションでの client_id の設定に関する著者の意見を検討してください。

更新

ソース コードを更新し、クライアント シークレットを削除しました。これは、ember アプリに含めるべきではないためです。

于 2016-04-29T07:41:18.553 に答える