У меня есть система Laravel, которая позволяет людям проходить аутентификацию, щелкая URL-адрес, содержащий маркер входа в систему. Это облегчает удобный доступ на мобильных устройствах без необходимости управлять паролями.
Я создал модель с именем App\LoginTokens
и маршрут web.php:
Route::get('/arbitraryprefix/{tokenCode}','LoginTokenController@loginWithTokenAndRedirect')
Этот метод контроллера проверяет токен и, если он действителен, регистрирует пользователя, используя \Auth::loginUsingId($loginToken->user_id)
и перенаправляет на URL токена $loginToken->url
.
. Очевидно, существуют другие меры безопасности (включая истечение срока действия токена и правила, обеспечивающиеаутентифицируемый пользователь относится к одному конкретному классу, который не имеет большого доступа в системе.
Я пишу несколько тестовых примеров в Laravel Dusk и хочу убедиться, что токен регистрирует пользователя в качестве правильного пользователя.
Моя система работает на Laravel 5.4, поэтому я использую assertPathIs
в качестве assertUrlIs
в недоступном для 5.4, и это подтверждает, что я перенаправляю на правильный документ.
$this->browse(function ($browser) use ($loginToken,$oneClientUser) {
$browser->visit('/logout')
->waitForText('Login')
->visit($loginToken->getLoginAndRedirectUrl())
->waitForText($oneClientUser->name)// the users name shows in top right when they are logged in.
->assertPathIs(parse_url($loginToken->url,PHP_URL_PATH))
->visit('/logout')
->waitForText('Login');
});
Я хочуподключите к браузеру вызов типа
$browser->assertUserIs($oneClientUser)
, но мне пришлось согласиться на проверку их имени пользователя, которое отображается для аутентифицированных пользователей.
Есть ли способ проверить, какого пользователя я аутентифицирую, как при $this->browse(function($browser){ --here--})
обратном вызове?