- Ich kann auf die Route zugreifen, indem ich ein Client-Grant von einem Token aus erhalte, das in
/oauth/token erhalten wurde - Ich kann auch auf die Route zugreifen, indem ich ein Token vom Anmeldebenutzer verwende (persönlicher Zugriffsclient)
von oauth/token zu erhalten, mich dann anzumelden, um das Zugriffstoken für den Benutzer zu erhalten, und dieses Benutzertoken auf dieser bestimmten Route verwende, habe ich keine Probleme
(test_get_products_using_authenticated_user)
Aber wenn ich Passport::actingAs verwende, erhalte ich eine Fehlermeldung
(test_get_products_using_authenticated_user2)
hier ist das Code-Snippet
Code: Select all
public function test_get_products_using_authenticated_user(): void
{
$data = [
'email' => CustomerSeeder::CUSTOMER_EXAMPLE_EMAIL,
'password' => CustomerSeeder::CUSTOMER_EXAMPLE_PASSWORD,
];
$loginResponse = $this->withHeaders([
'Authorization' => 'Bearer ' . $this->generateAccessToken(),
])->postJson('/api/login', $data);
$loginResponse->assertStatus(200);
$loginToken = $loginResponse->json('data.token');
$response = $this->withHeaders([
'Authorization' => 'Bearer ' . $loginToken,
])->getJson('/api/products');
$response = $this->get('/api/products');
$response->assertStatus(200);
}
public function test_products_using_authenticated_user2(): void
{
$user = User::where('email', CustomerSeeder::CUSTOMER_EXAMPLE_EMAIL)->first();
Passport::actingAs(
$user,
[],
'api'
);
$response = $this->get('/api/products');
$response->assertStatus(200);
}
Code: Select all
Route [login] not defined.
at tests\Feature\api\ProductTest.php:58
54▕ 'api'
55▕ );
56▕
57▕ $response = $this->get('/api/products');
➜ 58▕ $response->assertStatus(200);
59▕ }
60▕ }
61▕
Code: Select all
Route::group(['prefix' => 'products', 'middleware' => 'client'], function () {
Route::get('/', [ProductController::class, 'index'])- >name('product.list');
});
Code: Select all
protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class,
'client' => CheckClientCredentials::class,
Code: Select all
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
Was fehlt mir hier?
Ich verwende Laravel 10.10, Passport 12 und PHP 8.1
Mobile version