3

独自の OAuth フローと Ember-Simple-Auth で Torii をセットアップしようとしています。成功した認証イベントを取得できますが、認証直後にinvalidateSessionトリガーが起動され、セッションが終了します。これは ( を含む) をインターセプトすることで確認できsessionInvalidated()ます。/app/routes/application.jsApplicationRouteMixin

これに出くわした人はいますか?すぐにセッションの検証を引き起こすような奇妙なことはありますか? アドバイスをいただければ幸いです。

編集:最初のリターンは機能しますが、2番目のリターンは機能しないため、鳥居ポップアップコードに関係していると思います。何かご意見は?

import OAuth2 from 'torii/providers/oauth2-code';
import {configurable} from 'torii/configuration';

export default OAuth2.extend({
  name: 'api',
  init() { this.set('clientID', this.get('apiKey')); },

  baseUrl: configurable('baseUrl'),

  redirectUri: configurable('redirectUri'),
  responseParams: ['access_token', 'user_id', 'first_name'],

  requiredUrlParams: ['client_id', 'redirect_uri', 'response_type'],

  open() {
    let name        = this.get('name');
    let url         = this.buildUrl();
    let redirectUri = this.get('redirectUri');
    let responseParams = this.get('responseParams');

    // this return works
    return { 'yes' : 'no' }

    // this return causes the immediate invalidation
    return this.get('popup').open(url, responseParams).then((authData) => {
      var missingResponseParams = [];

      responseParams.forEach(function(param){
        if (authData[param] === undefined) {
          missingResponseParams.push(param);
        }
      });

      if (missingResponseParams.length){
        throw new Error("The response from the provider is missing " +
              "these required response params: " + missingResponseParams.join(', '));
      }

      return {
        access_token: authData.access_token,
        first_name: authData.first_name,
        user_id: authData.user_id,
        provider: name,
        redirectUri: redirectUri
      };
    });
  }
});
4

2 に答える 2

3

本当の答えは、このフォークを使用することです: https://github.com/simplabs/ember-simple-auth/pull/931 (うまくいけば、すぐにマスターになります)。

于 2016-03-17T00:46:34.070 に答える
2

this.get('session').invalidate();どこかにあるかもしれません。おそらく、コントローラーのアクション プロパティの 1 つにあります。通常、ログアウトボタンのアクションにそれを入れます。たまたまコピーして貼り付けたのかもしれません。あなたがいくつかのコードを投稿すれば、私はそれをもう少し見ることができるかもしれません

于 2016-03-04T01:56:03.177 に答える