Laravel Sanctum Impersonate User работает только для одного запросаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel Sanctum Impersonate User работает только для одного запроса

Сообщение Anonymous »

Я использую Laravel Jetstream, который использует святилище для аутентификации. Я пытаюсь создать простую функцию олицетворения, и она работает на 99 %, но мне не хватает чего-то небольшого.
Если имитатор и олицетворяющие пользователи имеют одно и то же пароль, он работает на 100%, и я могу обновлять страницу сколько угодно раз. Если это не так и у них разные пароли, как обычно, когда вы выдаете себя за пользователя, панель загружается, но при последующих обновлениях вы перейдете на экран входа в систему.Все, что я делал, я записал здесь: https://github.com/thorst/laravel-jetst ... /README.md
Это будет помочь пользователям в будущем, как только я заставить его работать, так как это популярная тема.
В общем, вот мой олицетворяющий контроллер:

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

public function start(Request $request, $userId)
{
// Ensure the current user has permission to impersonate
if (!Auth::user()->canImpersonate()) {
abort(403, 'Unauthorized action.');
}

Session::put('impersonate', $userId);

return redirect()->route('dashboard');
}
public function stop()
{
// Remove impersonation data from the session
session()->forget('impersonate');

return redirect()->route('dashboard');
}
И мое промежуточное программное обеспечение:

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

 public function handle(Request $request, Closure $next): Response
{

// Check if impersonation is active
if (Session::has('impersonate')) {
$impersonatedUserId = Session::get('impersonate');

// Find and set the impersonated user
$impersonatedUser = \App\Models\User::find($impersonatedUserId);
if ($impersonatedUser && $impersonatedUser.canBeImpersonated()) {
Auth::setUser($impersonatedUser);
}
}

return $next($request);
}
Поскольку это работает на 100%, когда у меня один и тот же пароль для обоих пользователей, я предположил, что это будет этот код, но добавив его в функцию запуска в контроллере или в промежуточное программное обеспечение, похоже, это не помогло.

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

  session()->put([
'password_hash_sanctum' => $impersonatedUser->getAuthPassword(),
]);
Любые советы и рекомендации будут полезны. Я знаю, что есть пара пакетов, но, например, lab404/laravel-impersonate на самом деле больше не поддерживается.
Спасибо,

Подробнее здесь: https://stackoverflow.com/questions/792 ... ne-request
Ответить

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

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

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

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

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