来自两个以上表的 Laravel Multi Auth
Posted
技术标签:
【中文标题】来自两个以上表的 Laravel Multi Auth【英文标题】:Laravel Multi Auth from more than two tables 【发布时间】:2019-04-01 02:10:56 【问题描述】:我想用 laravel 写一个 web 服务
我正在尝试分别对 users
表和 admins
表中的 users 和 admin 进行身份验证。在此 Web 服务中,用户和管理员身份验证是不同的。
通过email
验证管理员和通过phone number
验证用户。管理员通过Web
路由访问管理面板,用户使用API
路由。
据我所知,Auth::attempt
用于从 admins
表验证 admins
,但我想从 users
表验证其他用户并从 admin
表验证管理员。谁能解释多重身份验证从两个以上的表中举例??
我知道
Auth::attempt
用于从用户表中验证users
,但我更改了名称。
到目前为止我做了什么警卫 配置/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');
);
用户控制器 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());
【问题讨论】:
【参考方案1】:我的第一个建议是 为您的管理员和用户设置不同的控制器,然后您可以指定为什么要使用守卫来处理请求。
【讨论】:
以上是关于来自两个以上表的 Laravel Multi Auth的主要内容,如果未能解决你的问题,请参考以下文章
来自同一登录名的 Laravel Multi-auth(多个用户表)
来自同一登录的Laravel Multi-auth(多个用户表)
视图中的 Laravel Multi-Auth @auth 语法
Laravel Passport 来自同一端点的响应同时来自两个用户的两个不同的 access_tokens 在两种情况下都返回第一个用户