Тайм-аут сеанса с использованием SPA и oidc-js
Я использую Angular 5 с oidc-клиентом и сервером идентификации 4. Поддерживается ли время ожидания сеанса в oidc-client или мне нужно реализовать его вручную?
Под тайм-аутом сессии я подразумеваю, что пользователь выйдет из системы после некоторого простоя
1 ответ
Для ваших приложений SPA вы можете использовать неявный поток, обновление токена невозможно автоматически, но oidc-client.js может упростить вам задачу. вы можете использовать автоматическое обновление, oidc-client отправит активную сессию cookie, чтобы получить новый access_token непосредственно перед истечением нового. вам нужно только настроить его
const config = {
authority: xxxxx,
client_id: xxxxx,
popup_redirect_uri: `${OidcConfig.clientRoot}/assets/html/popup-login-redirect.html`,
scope: 'openid profile',
response_type: 'id_token token',
post_logout_redirect_uri: `${OidcConfig.clientRoot}?postLogout=true`, // delet all stored tokens after logout
userStore: new WebStorageStateStore({ store: window.localStorage }),
automaticSilentRenew: true, // enable silent refresh
silent_redirect_uri: `${OidcConfig.clientRoot}/assets/html/silent-refresh-redirect.html` // here when you can get the new tokens
};
вот содержимое файла silent-refresh-redirect.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.5.1/oidc-client.min.js"></script>
<script>
var config = {
userStore: new Oidc.WebStorageStateStore({ store: window.localStorage })
};
new Oidc.UserManager(config).signinSilentCallback()
.catch((err) => {
console.log(err);
});
</script>