Есть ли у кого-нибудь идея, как использовать таблицу кандидатов (например) вместо таблицы пользователей с laravel Sanctum?
Я попытался добавить это в auth.php, но это не сработало.
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'sanctum',
'provider' => 'applicants',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
],
'applicants' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\API\Applicant::class),
],
],
Я использую laravel 11, когда я пытаюсь использовать Auth::attempt(), я ищу пользователя в таблице пользователей, а не в таблице кандидатов.
Хорошо, вы хотите найти пользователя из таблицы applicants. Верно?
да, я хочу аутентифицировать их из applicants Я использую это в функции входа в систему: ``` if (Auth::attempt(['mobile' => $data['mobile'], 'password' => $data[' пароль']])) { $applicant = Auth::user(); $data['token'] = $applicant->createToken('API Token')->plainTextToken; }else { ```
Хорошо, я опубликовал свой ответ. Пожалуйста, проверьте и дайте мне знать, работает ли он. Спасибо.






Вы не можете использовать env('AUTH_MODEL'.. для двух разных классов моделей.
Вместо вашего кода попробуйте этот для провайдеров applicants.
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
],
'applicants' => [
'driver' => 'eloquent',
'model' => App\Models\API\Applicant::class,
],
],
И в свой guards добавьте providers имя applicants, а не applicant.
В laravel 11 по умолчанию охранник users. Итак, в случае custom-guard (в вашем случае api, который указывает на applicants провайдеров) сделайте это для аутентификации пользователей.
if (Auth::guard('api')->attempt(['mobile' => $data['mobile'], 'password' => $data['password']]))
{
$applicant = Auth::guard('api')->user();
$data['token'] = $applicant->createToken('API Token')->plainTextToken;
}
else
{
....
}
Попробуйте это, это сработает.
В случае возникновения каких-либо других проблем, связанных с аутентификацией sanctum, вы можете воспользоваться руководством по этой ссылке.
https://github.com/savanihd/Laravel-11-REST-API-using-Sanctum/blob/main/config/auth.php
Для получения дополнительной информации о конфигурации custom-guard и о том, как к ней будет доступ, вы можете перейти по ссылке на официальную документацию, приведенной ниже.
https://laravel.com/docs/11.x/authentication#accessing-specific-guard-instances
Спасибо за ваш ответ и время, но сейчас я получаю эту ошибку: BadMethodCallException: метод Illuminate\Auth\RequestGuard::attempt не существует
` 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'session', 'provider ' => 'applicants', ], ], ` ну, вот я сменил драйвер API с святилища на сеанс, и теперь он работает нормально, но правильно ли это делать ??
@AbdelfattahOmar, Да, 100% соответствует документации. Я редактирую свой ответ и предоставляю официальную ссылку на документ, где вы можете узнать больше. Пожалуйста, проголосуйте и примите мой ответ. Спасибо.
ну, есть что-то в том, что нужно 15 репутаций, чтобы проголосовать, но правда спасибо, я очень ценю вашу помощь
Чтобы проголосовать за, вам нужно 15 репутации, но чтобы принять ответ, я не думаю, что есть какое-либо ограничение. Кстати, без проблем, спасибо.
Вы можете проверить общую ссылку на GitHub в моем ответе, чтобы узнать подробности об аутентификации святилища.
Какую версию Laravel вы используете? Что у вас не заработало после данной настройки? Уточните.