我有一个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上,因此在5.4中不可用的情况下,我将assertPathIs
用作assertUrlIs
,这确认我重定向到了正确的文档。
$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--})
回调中对哪个用户进行了身份验证?