2

ストームパス ID サイトを使用するエクスプレス ストームパス アプリケーションがあります。次の構成があります。

app.use(stormpath.init(app, {
  web: {
    idSite: {
      enabled: true,
      uri: '/idSiteResult',
      nextUri: '/'
    },
    login: {
      enabled: true,
      uri: config.login
    },
    logout: {
      enabled: true,
      uri: config.logout
    },
    me: {
      expand: {
        customData: true,
        groups: true
      }
    }
  }
}));

ログインは正常に機能しますが、ログアウトすると問題が発生します。

まず、stormpath-sdk-angularjs 組み込みの endSession() でログアウトしてみました

$auth.endSession();

しかし、私はまだログインしていました。

express-stormpath を掘り下げると、logout POST には id-site logout の Accept type text/html が必要なようです。stormpath-sdk-angularjs では、endSession POST が application/json を使用しているようです。

ということで $http.post でログアウトしてみた

$http.post('/logout', null, {
  headers: {
    'Accept': 'text/html'
  }
});

しかし、私はこのエラーが発生します:

XMLHttpRequest はhttps://api.stormpath.com/sso/logout?jwtRequest=[...]を読み込めません。「https://api.stormpath.com/sso/logout?jwtRequest=[...]」から「http://localhost:9000/idSiteResult?jwtResponse=[...] 」へのリダイレクトが CORS によってブロックされましたポリシー: 要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http://localhost:9000 ' へのアクセスは許可されません。

Stormpath ID サイトからログアウトするにはどうすればよいですか?

4

2 に答える 2

1

私はストームパスで働いています。ID サイトでは、実際にエンド ユーザーを ID サイトにリダイレクトする必要があります。うまくいかない理由endSession()はわかりませんが、JS チームに連絡して、バグがあるかどうかを確認します。

それまでの間、このコード (または Angular 固有のプリミティブの同等のもの) を使用して、ログアウトを実行できます。

var form = document.createElement('form');
form.method = "POST";
form.action = "/logout";
form.submit();
于 2016-12-19T21:35:04.043 に答える
0

これは CORS の問題のようです。少なくとも追加する必要があると思います。

Access-Control-Allow-Origin: https://api.stormpath.com

サーバーからの応答ヘッダーへ。

于 2016-12-19T21:10:46.773 に答える