阅读(51) (10)

Laravel 8 Session / 身份验证

2021-07-08 09:45:50 更新

Laravel 提供了几个可在 HTTP 测试时使用 Session 的辅助函数。首先,你需要传递一个数组给 withSession 方法来设置 session 数据。这样在应用程序的测试请求发送之前,就会先去给数据加载 session:

<?php

class ExampleTest extends TestCase
{
    public function testApplication()
    {
        $response = $this->withSession(['foo' => 'bar'])
                         ->get('/');
    }
} 

当然,一般使用 session 时都是用于维护用户状态,如用户认证。actingAs 辅助函数提供了简单的方法来指定的用户认证为当前用户。例如,我们可以使用 工厂模式 来生成并认证用户:

<?php

use App\Models\User;

class ExampleTest extends TestCase
{
    public function testApplication()
    {
        $user = User::factory()->create();

        $response = $this->actingAs($user)
                         ->withSession(['foo' => 'bar'])
                         ->get('/');
    }
} 

你也可以通过传递看守器名称作为 actingAs 方法的第二参数以指定用户通过哪种看守器来认证:

$this->actingAs($user, 'api')