oidc-клиент получает данные о состоянии
Как сохранить исходный URL, на который переходил пользователь? Скажем, у меня есть неаутентифицированный пользователь, который переходит на http://localhost:9000/customer/123
Для аутентификации пользователя я бы сделал:
// in my app.js
new Oidc.UserManager().signinRedirect({state:'customer/123'}); // need a way to keep this url
Когда это возвращается в callback.html, где мне нужен способ перехода к исходному URL:
// callback.html
<script src="oidc-client.js"></script>
<script>
Oidc.Log.logger = console;
new Oidc.UserManager().signinRedirectCallback().then(function () {
var state = 'customer/123' // how to do a redirect to the page originally requested page?
window.location.href="http://localhost:9000/ + state
}).catch(function (e) {
console.error(e);
});
</script>
Или, может быть, есть другие способы получения оригинального URL?
Спасибо за любую помощь!
1 ответ
Решение
Ваш подход хорош. Вы входите в систему так, как вы это делаете, а затем в функции обратного вызова слегка изменяете свой код (используйте возвращаемый объект пользователя):
new Oidc.UserManager().signinRedirectCallback().then(function (user){
var url = user.state;
//more code here
}
Состояние будет частью пользовательского объекта и будет иметь значение, которое вы указали. И вы можете перенаправить туда, куда вы хотите.