如何使用 express-stormpath 和 stormpath-sdk-angularjs 注销 Stormpath ID 站点?
How do I log out of Stormpath ID Site with express-stormpath and stormpath-sdk-angularjs?
我有一个使用 Stormpath ID 站点的 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. In stormpath-sdk-angularjs, it looks like endSession POST uses application/json。
所以我尝试使用 $http.post
注销
$http.post('/logout', null, {
headers: {
'Accept': 'text/html'
}
});
但是我得到这个错误:
XMLHttpRequest cannot load https://api.stormpath.com/sso/logout?jwtRequest=[...]. Redirect from 'https://api.stormpath.com/sso/logout?jwtRequest=[...]' to 'http://localhost:9000/idSiteResult?jwtResponse=[...]' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.
如何退出 Stormpath ID 站点?
这看起来像是一个 CORS 问题。我相信您至少需要添加;
Access-Control-Allow-Origin: https://api.stormpath.com
来自您的服务器的响应 headers。
我在 Stormpath 工作。 ID 站点要求您实际将最终用户重定向到 ID 站点。我不确定为什么 endSession()
不起作用,但我会联系我们的 JS 团队,看看那里是否存在错误。
同时,您可以使用此代码(或 Angular 特定原语中的等效代码)完成注销:
var form = document.createElement('form');
form.method = "POST";
form.action = "/logout";
form.submit();
我有一个使用 Stormpath ID 站点的 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. In stormpath-sdk-angularjs, it looks like endSession POST uses application/json。
所以我尝试使用 $http.post
注销$http.post('/logout', null, {
headers: {
'Accept': 'text/html'
}
});
但是我得到这个错误:
XMLHttpRequest cannot load https://api.stormpath.com/sso/logout?jwtRequest=[...]. Redirect from 'https://api.stormpath.com/sso/logout?jwtRequest=[...]' to 'http://localhost:9000/idSiteResult?jwtResponse=[...]' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.
如何退出 Stormpath ID 站点?
这看起来像是一个 CORS 问题。我相信您至少需要添加;
Access-Control-Allow-Origin: https://api.stormpath.com
来自您的服务器的响应 headers。
我在 Stormpath 工作。 ID 站点要求您实际将最终用户重定向到 ID 站点。我不确定为什么 endSession()
不起作用,但我会联系我们的 JS 团队,看看那里是否存在错误。
同时,您可以使用此代码(或 Angular 特定原语中的等效代码)完成注销:
var form = document.createElement('form');
form.method = "POST";
form.action = "/logout";
form.submit();