Основная вкладка не сохраняет состояние аутентификации после аутентификации пользователя во всплывающем окне с помощью LPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Основная вкладка не сохраняет состояние аутентификации после аутентификации пользователя во всплывающем окне с помощью L

Сообщение Anonymous »

Я работаю над проектом с TALL Stack, где я реализовал OAuth2 с использованием пакета Laravel Socialite. Изначально я сделал простую ссылку с URI перенаправления. Этот подход работает нормально, пользователь легко проходит аутентификацию в Google и перенаправляется на намеченный маршрут. В настоящее время я хочу, чтобы страница аутентификации Google OAuth2 открывалась во всплывающем окне, и после аутентификации пользователя всплывающее окно закрывается, а затем основная вкладка или окно перенаправляет пользователя на намеченный маршрут после аутентификации. Проблема, с которой я столкнулся сейчас, заключается в том, что пользователь проходит аутентификацию во всплывающем окне, и окно закрывается после аутентификации. Однако главное окно не сохраняет состояние аутентификации пользователя. В результате перенаправление не происходит. Позвольте мне также упомянуть, что это происходит только при первой аутентификации пользователя. После последующей аутентификации пользователя перенаправление происходит во всплывающем окне, и всплывающее окно не закрывается автоматически. Это указывает на то, что пользователь действительно проходит аутентификацию, но только во всплывающем окне, а не в основной вкладке или окне.
Это ссылка для перенаправления на страницу OAuth2

Код: Выделить всё

[url=javascript:void(0);]
[img]{{ asset([/img]
 Sign up with Google
[/url]
В JS я открываю всплывающее окно для аутентификации OAuth2, затем прослушиваю событие во всплывающем окне для успешной аутентификации, а затем перенаправляю пользователя на панель управления.

Код: Выделить всё

function openOAuthPopup() {
var popup = window.open('/auth/redirect', 'popup', 'width=700, height=700');

// Listen for messages from the popup
window.addEventListener('message', function(event) {
if (event.origin !== "{{ url('/') }}")
return;

if (event.data === 'authenticated') {
window.location.href = '/dashboard';
}
}, false);
}
Ниже приведен метод PHP для обработки обратного вызова.

Код: Выделить всё

public function callback(): View
{
$googleUser = Socialite::driver('google')->stateless()->user();
//Handle user registration or login
...

return view('livewire.auth.oauth_callback');
}
В представлении livewire.auth.oauth_callback у меня был простой скрипт, который отправляет сообщение в открывающее окно, а затем закрывает всплывающее окно.

Код: Выделить всё

// When the popup loads this view, send a message to the opener window
window.onload = function() {
window.opener.postMessage("authenticated", "{{ url('/') }");
window.close(); // Close the popup window
}
Я не знаю, имеет ли это какое-либо отношение к сеансу. В моем config/session.php все по умолчанию.
Что я делаю не так? Кроме того, есть ли лучший подход к этому?

Подробнее здесь: https://stackoverflow.com/questions/782 ... in-popup-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»