来自两个以上表的 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 表中的 usersadmin 进行身份验证。在此 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 语法

使用 Hyn/多租户在 Laravel 项目中设置测试

Laravel Passport 来自同一端点的响应同时来自两个用户的两个不同的 access_tokens 在两种情况下都返回第一个用户

Laravel:用两个表在 laravel 中显示数据