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
}

Состояние будет частью пользовательского объекта и будет иметь значение, которое вы указали. И вы можете перенаправить туда, куда вы хотите.

Другие вопросы по тегам