我有一个使用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网站?
答案 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
到服务器的响应标头。