如何使用 Auth0 将用户重定向回最初请求的页面?
How to redirect the user back to the originally requested page with Auth0?
我将 Auth0 与 OWIN 和 lock.js 一起使用,如 this tutorial 中所述。唯一的区别是我使用的是 Nancy 而不是 MVC,但这应该没有任何区别。
登录正常。 现在我希望能够将用户重定向到他最初请求的页面,即他在被重定向到登录表单时输入的 URL。
我在 Auth0 教程或文档中找不到任何信息。
通常的做法是将原始 URL 保存在 state
参数中,协议 (OpenID Connect) 保证它将在所有交易中得到保留。
在nodejs/passport你会做:
//Middleware for routes that require login:
var requiresLogin = function(req, res, next) {
if (!req.isAuthenticated()) {
var orignalUrl = encodeURIComponent(new Buffer(req.url).toString('base64'));
return res.redirect('/login?state=' + orignalUrl);
}
...
然后在回调中URL:
app.get('/callback',
passport.authenticate('auth0', { failureRedirect: '/login' }),
function(req, res) {
if (!req.user) {
throw new Error('user null');
}
if(req.query.state){
var orignalUrl = new Buffer(decodeURIComponent(req.query.state), 'base64').toString();
return res.redirect(orignalUrl);
}
res.redirect("/");
});
瞧瞧!
Eugenio 的回答为我指明了正确的方向,我 post 完整的解决方案在这里作为参考。
return URL 需要存储在state
参数中。 Auth0 OWIN 包支持登录成功后的重定向,但需要在状态参数.
中将重定向URL命名为ru
这就是锁定设置的样子:
lock.show({
// Other lock setup params
authParams: {
state: 'ru=RETURN_URL_HERE'
}
});
我试过了,但对我不起作用。原因是配置似乎已更改为构造函数而不是 show
方法。此外,为了使其工作,我需要做不同的事情,比如设置 auth.params.state
属性、auth.redirectUrl
和 auth.responseType
属性 .在下面的 link 中,我以更好的方式描述了我是如何解决它的。我正在使用 React Router 开发 React 应用程序,但是我描述的解决方案有些笼统。
https://github.com/auth0/wp-auth0/issues/29#issuecomment-252040395
我将 Auth0 与 OWIN 和 lock.js 一起使用,如 this tutorial 中所述。唯一的区别是我使用的是 Nancy 而不是 MVC,但这应该没有任何区别。
登录正常。 现在我希望能够将用户重定向到他最初请求的页面,即他在被重定向到登录表单时输入的 URL。
我在 Auth0 教程或文档中找不到任何信息。
通常的做法是将原始 URL 保存在 state
参数中,协议 (OpenID Connect) 保证它将在所有交易中得到保留。
在nodejs/passport你会做:
//Middleware for routes that require login:
var requiresLogin = function(req, res, next) {
if (!req.isAuthenticated()) {
var orignalUrl = encodeURIComponent(new Buffer(req.url).toString('base64'));
return res.redirect('/login?state=' + orignalUrl);
}
...
然后在回调中URL:
app.get('/callback',
passport.authenticate('auth0', { failureRedirect: '/login' }),
function(req, res) {
if (!req.user) {
throw new Error('user null');
}
if(req.query.state){
var orignalUrl = new Buffer(decodeURIComponent(req.query.state), 'base64').toString();
return res.redirect(orignalUrl);
}
res.redirect("/");
});
瞧瞧!
Eugenio 的回答为我指明了正确的方向,我 post 完整的解决方案在这里作为参考。
return URL 需要存储在state
参数中。 Auth0 OWIN 包支持登录成功后的重定向,但需要在状态参数.
ru
这就是锁定设置的样子:
lock.show({
// Other lock setup params
authParams: {
state: 'ru=RETURN_URL_HERE'
}
});
我试过了,但对我不起作用。原因是配置似乎已更改为构造函数而不是 show
方法。此外,为了使其工作,我需要做不同的事情,比如设置 auth.params.state
属性、auth.redirectUrl
和 auth.responseType
属性 .在下面的 link 中,我以更好的方式描述了我是如何解决它的。我正在使用 React Router 开发 React 应用程序,但是我描述的解决方案有些笼统。
https://github.com/auth0/wp-auth0/issues/29#issuecomment-252040395