沙罗卡加拉/laravelmultiauth

原生的Laravel多认证(订阅者、管理员、超级管理员)。

v1.0.8 2020-05-29 14:39 UTC

This package is auto-updated.

Last update: 2024-09-17 23:38:24 UTC


README

一个简单的原生Laravel包,用于处理多个认证。

GitHub issues GitHub forks GitHub stars GitHub license

Image of Sandro Cagara

特性

兼容性

安装和配置

使用composer安装
注意:在安装之前,您需要使用php artisan make:auth创建默认认证,然后删除home.blade.php

$ composer require sandrocagara/laravelmultiauth

您还需要发布[#]Sandrocagara\Multiauth\AuthServiceProvider

$ php artisan vendor:publish --force

路由

您需要将以下内容复制粘贴到您的routes/web.php中。

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();
Route::prefix('home')->group(function() {
    Route::get('/', 'HomeController@index')->name('home');

    Route::get('/change-password','HomeController@showChangePasswordForm')->name('home.change-password.form');
    Route::post('/change-password', 'HomeController@changePassword')->name('home.change-password.submit');

    Route::get('/logout', 'Auth\LoginController@userlogout')->name('home.logout');
});

Route::prefix('admin')->group(function() {
    Route::get('/login', 'Auth\AdminLoginController@showLoginForm')->name('admin.login.form');
    Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');

    Route::get('/', 'AdminHomeController@index')->name('admin.home');

    Route::get('/change-password','AdminHomeController@showChangePasswordForm')->name('admin.change-password.form');
    Route::post('/change-password','AdminHomeController@changePassword')->name('admin.change-password.submit');

    Route::get('/logout', 'Auth\AdminLoginController@logout')->name('admin.logout');

    Route::post('/password/email', 'Auth\AdminForgotPasswordController@sendResetLinkEmail')->name('admin.password.email');
    Route::get('/password/reset', 'Auth\AdminForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
    Route::post('/password/reset', 'Auth\AdminResetPasswordController@reset')->name('admin.reset');
    Route::get('/password/reset/{token}', 'Auth\AdminResetPasswordController@showResetForm')->name('admin.password.reset');
});

Route::prefix('super-admin')->group(function() {
    Route::get('/login', 'Auth\SuperAdminLoginController@showLoginForm')->name('super-admin.login.form');
    Route::post('/login', 'Auth\SuperAdminLoginController@login')->name('super-admin.login.submit');

    Route::get('/', 'SuperAdminHomeController@index')->name('super-admin.home');

    Route::get('/change-password', 'SuperAdminHomeController@showChangePasswordForm')->name('super-admin.change-password.form');
    Route::post('/change-password', 'SuperAdminHomeController@changePassword')->name('super-admin.change-password.submit');

    Route::get('/logout', 'Auth\SuperAdminLoginController@superAdminlogout')->name('super-admin.logout');

    Route::post('/password/email', 'Auth\SuperAdminForgotPasswordController@sendResetLinkEmail')->name('super-admin.password.email');
    Route::get('/password/reset', 'Auth\SuperAdminForgotPasswordController@showLinkRequestForm')->name('super-admin.password.request');
    Route::post('/password/reset', 'Auth\SuperAdminResetPasswordController@reset')->name('super-admin.reset');
    Route::get('/password/reset/{token}', 'Auth\SuperAdminResetPasswordController@showResetForm')->name('super-admin.password.reset');
});

Route::prefix('account')->group(function() {
    Route::get('/user/verified/{token}', 'Auth\RegisterController@accountVerification');
});

Route::fallback(function(){
    return back();
});

迁移

然后,您就可以进行迁移了。

php artisan migrate

配置

config/auth.php中,重置密码的默认过期时间为30分钟。您可以通过更新此数组来更改它。

'passwords' => [
     'users' => [
         'provider' => 'users',
         'table' => 'password_resets',
         'expire' => 30, <-HERE
     ],

     'admins' => [
         'provider' => 'admins',
         'table' => 'password_resets',
         'expire' => 30, <-HERE
     ],

     'super_admins' => [
         'provider' => 'super_admins',
         'table' => 'password_resets',
         'expire' => 30, <-HERE
     ],
 ],

使用Laravel Tinker生成模拟账户

php artisan tinker

用户: factory(App\User::class, 5)->create();
管理员: factory(App\Admin::class, 5)->create();
超级管理员: factory(App\SuperAdmin::class, 5)->create();

默认密码: secret

您可能遇到的常见问题

错误:期望响应代码250,但得到代码"530",信息为"530 5.7.1 认证所需"。
解决方案:您需要设置您的邮件驱动。更多信息请参阅[https://laravel.net.cn/docs/5.6/mail]

错误:当点击邮件中的重置密码时,出现“找不到对象!”。
解决方案:如果您使用的是php artisan serve,您需要将env文件中的APP_URLhttps://更改为http://127.0.0.1:8000/

错误:尝试在类型为null的值上访问数组偏移。这种类型的错误可能是由于PHP版本引起的,您可能需要在composer.json中升级PHP版本。
解决方案:尝试使用以下命令更新composer:composer update

错误:“页面由于不活动而过期”。
解决方案:如果您使用的是php artisan serve,您需要将env文件中的APP_URL从https://更改为http://127.0.0.1:8000/

许可证

MIT © 2020 Sandro Cagara