Если пользователь не авторизован, вы можете отправить сообщение из iframe его родителю.Получив сообщение, вы перенаправите родительское окно на страницу выхода.Пример реализации находится здесь .
Однако это становится намного сложнее, если вы не можете изменить источник страницы iframe.Поскольку вы используете nginx, одним из решений будет внедрение скрипта с использованием модуля ngx_http_sub_module
.Этот модуль заменяет одну строку в ответе другой.Обратите внимание, что этот модуль не включен по умолчанию, вам может понадобиться собрать nginx с параметром --with-http_sub_module
.Для получения дополнительной информации, включая пример, см. Страницу модуля .
Для iframe необходима строка:
parent.postMessage( "redirect", "http://www.your-domain.com" );
Чтобы добавить это с помощью nginx, вы можете попробовать:
location / {
sub_filter '</head>' '<script language="javascript">parent.postMessage( "redirect", "http://www.your-domain.com" );</script></head>';
sub_filter_once on;
}
Родительскому окну потребуется соответствующий код:
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[ eventMethod ];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
// Listen to message from child window
eventer( messageEvent, function( e ) {
// normally if the message was meant to come from your domain
// you would check e.origin to verify that it's not someone
// sending messages you don't want
if ( e.data = "redirect" ) {
window.location.replace( "your-logout-url" );
}
}, false );
Более продвинутое решение может включать URL-адрес перенаправления в сообщении;затем вы можете обрабатывать iframe, перенаправляя в разные места.