如何使用express-stormpath和stormpath-sdk-angularjs退出Stormpath ID站点?

时间:2016-12-19 09:42:07

标签: stormpath express-stormpath

我有一个使用Stormpath ID Site的express-stormpath应用程序。它有这样的配置:

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 requires Accept type text/html for id-site logout。在stormpath-sdk-angularjs中,它看起来像endSession POST uses application/json

所以我尝试使用$ http.post

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

但是我收到了这个错误:

  

XMLHttpRequest无法加载https://api.stormpath.com/sso/logout?jwtRequest=[...]。 CORS策略已阻止从“https://api.stormpath.com/sso/logout?jwtRequest=[...]”重定向到“http://localhost:9000/idSiteResult?jwtResponse=[...]”:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:9000”访问。

如何退出Stormpath ID网站?

2 个答案:

答案 0 :(得分:1)

我在Stormpath工作。 ID站点要求您实际将最终用户重定向到ID站点。我不确定为什么var form = document.createElement('form'); form.method = "POST"; form.action = "/logout"; form.submit(); 不起作用,但我会联系我们的JS团队,看看那里是否有错误。

与此同时,您可以使用此代码(或Angular特定基元中的等效代码)来完成注销:

{{1}}

答案 1 :(得分:0)

这看起来像是一个CORS问题。我相信你至少需要添加;

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

到服务器的响应标头。