我使用Auth0通过Google,Facebook和其他人授权用户。如果您在Auth0中列出白名单的回调URL列表时单击登录,则此方法非常有效。
但我的网络应用程序可以包含任意数量的不同网址,因此使用包含一些允许的网址的简单白名单不起作用。
登录始终尝试重定向回我登录时的相同URL,此URL大部分时间不在允许的URL列表中。
我已尝试过上述设置的各种变体,但我只会遇到以下错误:
网址“https://x.com/posts/gif/hot/1”不在允许的回拨网址列表中 网址“https://x.com/posts/world/new/1”不在允许的回调网址列表中 网址“https://x.com/posts/nature/hot/6”不在允许的回调网址列表中 网址“https://x.com/posts/gaming/hot/3”不在允许的回调网址列表中
Lock配置相关代码:
options = {
auth: {
callbackURL: 'https://x.com',
// redirectUrl: 'https://x.com',
responseType: 'token',
// sso: true,
// redirect: true,
params: {
scope: 'openid user_id name nickname email picture'
}
}
};
// Configure Auth0
lock = new Auth0Lock('x', 'x.auth0.com', this.options);
constructor(private _router: Router) {
this.userProfile = JSON.parse(localStorage.getItem('profile'));
// Add callback for the Lock `authenticated` event
this.lock.on('authenticated', (authResult) => {
localStorage.setItem('id_token', authResult.idToken);
// Fetch profile information
this.lock.getProfile(authResult.idToken, (error, profile) => {
if (error) {
throw new Error(error);
}
});
});
};
登录方法:
public login() {
// Call the show method to display the widget.
this.lock.show({
callbackUrl: 'https://x.com',
state: this._router.url
});
};
答案 0 :(得分:1)
我假设您使用的是最新版本的Lock(Lock 10),如果是这种情况,您所包含的代码存在一些问题:
auth: { redirectUrl: '...' }
指定的,您已对该行进行了注释,而代码却错误地使用了callbackURL
。show
方法不再使用任何参数。state
parameter应该用于缓解CSRF攻击,因此专门用它来传递上下文信息可能是不安全的。鉴于你有redirectUrl
评论,你可能也试过了;你在使用那个参数时有没有相同的行为?
根据文档,您应该通过以下方式完成所需配置:
options = {
auth: {
redirectUrl: 'https://example.com/login/callback',
responseType: 'token',
params: {
state: '[your_state_value]',
scope: 'openid user_id name nickname email picture'
}
}
};
public login() {
// Call the show method to display the widget.
this.lock.show();
};