Я хочу написать веб-сервис с laravel
Я пытаюсь аутентифицировать пользователей и admin формы users
таблицы и admins
таблицы соответственно.
В этом веб-сервисе аутентификация пользователя и администратора отличается.Аутентификация администраторов email
и пользователей phone number
. Администраторы получают доступ к панели администратора по Web
маршрутам, а пользователи используют API
маршрутов.
Как я знаю, Auth::attempt
используется для аутентификации admins
изadmins
table, но я хочу аутентифицировать других пользователей из users
table и admin из admin
table.
Может кто-нибудь объяснить Multi Auth из более чем двух таблиц с примером ??
Я знаю, что Auth::attempt
используется для аутентификации users
из таблицы пользователей, но я изменил имя.
Что я сделал до сих пор
Охранники
config / auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'admins',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
Провайдеры
'providers' => [
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
],
Маршруты
web.php (администраторы)
Route::group(['namespace' => 'Auth'] , function (){
// Authentication Routes...
$this->get('login', 'LoginController@showLoginForm')->name('login');
$this->post('login', 'LoginController@login');
$this->get('logout', 'LoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'ResetPasswordController@reset');
});
api.php (пользователи)
Route::group(['prefix' => 'android/v1' , 'namespace' => 'Api\Android\v1'] , function (){
$this->post('login' , 'UserController@login');
$this->post('register' , 'UserController@register');
});
UserController
api/android/v1/UserController.php
public function login(Request $request)
{
$validData = $this->validate($request, [
'mobile' => 'required|exists:users',
'password' => 'required'
]);
if(! auth()->attempt($validData)) {
return response([
'data' => 'data not true',
'status' => 'error'
],403);
}
return new UserResource(auth()->user());
}