5

私はプロジェクトを進めており、サーバー側を使用して、sid Cookie を前後に送信することで状態を自動的に処理する Express/Passport ドメイン Cookie を介して認証と承認を処理しています。

私はクライアントで認証管理をあまり構築していませんでした。サーバービューでグローバルjsオブジェクトとしてブートストラップするユーザーデータを取得していました。これを ember でより適切に処理したかったので、ember-simple-auth の実装を開始し、そこでログインや状態などをうまく処理できましたが、常にトークン戦略に依存しているようです。

現在、私のコードは次のようになっています。ご覧のとおり、トークン オブジェクトを使用して Promise を解決して機能させる必要がありますが、目的の戦略ではトークンは必要ありません。

authenticate: function(credentials) {
          var _this = this;
          return new Ember.RSVP.Promise(function(resolve, reject) {
              Ember.$.ajax({
                  url: _this.tokenEndpoint,
                  type: 'POST',
                  data: JSON.stringify({
                      email: credentials.identification,
                      password: credentials.password
                  }),
                  contentType: 'application/json'
              }).then(function(response) {

                  Ember.run(function() {
                      resolve({
                          token: response.session.token
                      });
                  });
              }, function(xhr, status, error) {
                  var response = JSON.parse(xhr.responseText);
                  Ember.run(function() {
                      reject(response.error);
                  });
              });
          });
      },

私の質問は、ember-simple-auth を Express/Passport ドメイン Cookie で動作するように適合させることができるか、またはベアラー戦略または oauth2 などを使用するようにサーバーを変更する必要があるかどうかです。

ありがとうございました。

4

1 に答える 1

4

Ember Simple Auth 自体はトークンを必要としません。ほとんどの場合、「オーソライザー」は、API サーバーへのリクエストにトークンを挿入するためにトークンを必要とします (こちらを参照してください: http://ember-simple-auth.simplabs.com/ember-simple-auth-api-docs .html#SimpleAuth-Authorizers-Base )。Cookie を使用している場合、認証されたユーザーを識別できるように Cookie がサーバーに送信されるため、実際にはオーソライザーは必要ありません。その場合、たとえばメソッド{ authenticated: true }から単純に解決し、authenticateメソッドでその値を確認できますrestore

restore: function(data) {
  return new Ember.RSVP.Promise(function(resolve, reject) {
    if (data.authenticated) {
      resolve(data);
    } else {
      reject();
    }
  });
}
于 2014-07-26T08:34:49.450 に答える