各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

如何在Laravel5.6中设置多个身份验证

管理员 2023-09-05
PHP
122

如何在Laravel5.6中设置多个身份验证

内容导读

收集整理的这篇技术教程文章主要介绍了如何在Laravel5.6中设置多个身份验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7198字,纯文字阅读大概需要11分钟

内容图文

在本文中,我们将介绍Laravel 5.6中的多个身份验证。这里中的多个身份验证只是针对多个用户模型进行身份验证的过程。

在以下部分中,我们将演示Laravel的内置身份验证功能。更具体地说,我将向您展示如何验证管理员用户和普通用户。

第1步:Laravel设置

使用composer设置Laravel项目。

composer create-project --prefer-dist laravel/laravel project-name

第2步:数据库配置

打开.env文件并在文件中设置数据库凭据。

DB_DATABASE= database-nameDB_USERNAME= rootDB_PASSWORD= database-password

第3步:身份验证

要使用Laravel的内置身份验证系统进行注册和登录,只需运行以下命令:

php artisan make:auth

第4步:设置模型和迁移

为管理员Admin创建和设置模型和迁移:

php artisan make:model Admin -m

要为Admin设置模型,请转到app / Admin.php并使用以下代码更新代码:

/** * Remove 'use IlluminateDatabaseEloquentModel;' */use IlluminateNotificationsNotifiable;use IlluminateFoundationAuthUser as Authenticatable;class Admin extends Authenticatable{    use Notifiable;// The authentication guard for admin    protected $guard = 'admin';     /**      * The attributes that are mass assignable.      *      * @var array      */    protected $fillable = [        'email', 'password',    ];     /**      * The attributes that should be hidden for arrays.      *      * @var array      */    protected $hidden = [        'password', 'remember_token',    ];

要为Admin设置迁移表,请转到database / migration / *** _ create_admins_table.php并使用以下代码更新代码:

//{    Schema::create('admins', function (Blueprint $table) {            $table->increments('id');            $table->string('email')->unique();            $table->string('password');            $table->rememberToken();            $table->timestamps();    }); }//

第5步:设置管理员控制器

要为Admin创建控制器,请运行以下命令:

php artisan make:controller AdminController

要设置控制器,请转到app / Http / Controllers / AdminController.php并使用以下代码更新代码:

class AdminController extends Controller{    /**     * Create a new controller instance.     *     * @return void     */    public function __construct()    {        $this->middleware('auth:admin');    }    /**     * Show the application dashboard.     *     * @return IlluminateHttpResponse     */    public function index()    {        return view('admin');    }}

第6步:为管理员用户设置登录控制器

要创建Login控制器,请运行以下命令:

php artisan make:controller Auth/AdminLoginController

要设置登录控制器,请转到app / Http / Controllers / Auth / AdminLoginController.php并使用以下代码更新代码:

use IlluminateHttpRequest;use AppHttpControllersController;use IlluminateFoundationAuthAuthenticatesUsers;use IlluminateSupportFacadesAuth;class AdminLoginController extends Controller{    /**     * Show the application’s login form.     *     * @return IlluminateHttpResponse     */    public function showLoginForm()    {        return view(’auth.admin-login’);    }    protected function guard(){        return Auth::guard('admin');    }        use AuthenticatesUsers;    /**     * Where to redirect users after login.     *     * @var string     */    protected $redirectTo = '/admin/dashboard';    /**     * Create a new controller instance.     *     * @return void     */    public function __construct()    {        $this->middleware('guest:admin')->except('logout');    }}

第7步:为普通用户设置登录控制器

要为普通用户设置登录控制器,请转到app / Http / Controllers / Auth / LoginController.php并使用以下代码更新代码:

///** * Show the application's login form. * * @return IlluminateHttpResponse */public function showLoginForm(){    return view('auth.login');}//

第8步:为管理员设置登录视图

要为Admin创建和设置登录视图,请转到resources / views / auth /并创建一个新文件admin-login.blade.php。复制resources / views / auth / login.blade.php中的代码并粘贴到新文件中。

现在使用以下内容更新新文件:

// <div class="card-header">{{ __('Admin Login') }}</div><div class="card-body">  <form method="POST" action="{{ route('admin.login.submit') }}">//

第9步:设置管理员的主视图

要为Admin创建和设置主视图,请转到resources / views /并创建一个新文件admin-home.blade.php。复制resources / views / home.blade.php中的代码并粘贴到新文件中。

现在使用以下内容更新新文件:

// <div class="card">   <div class="card-header">Admin Dashboard</div>//

第10步:设置Web应用程序路由

要为您的应用程序设置Web路由,请转至routes / web.php并使用以下代码更新代码:

//Route::get('/', function () {    return view('layouts.app');});Route::prefix('admin')->group(function() {    Route::get('/login', 'AuthAdminLoginController@showLoginForm')->name('admin.login');    Route::post('/login', 'AuthAdminLoginController@login')->name('admin.login.submit');    Route::get('/home', 'AdminController@index')->name('admin.home');});//

第11步:设置异常处理程序

要设置异常处理程序,请转到app / Exceptions / Handler.php并使用以下代码更新代码:

//use IlluminateAuthAuthenticationException;////protected $dontReport = [     IlluminateAuthAuthenticationException::class,     IlluminateAuthAccessAuthorizationException::class,     SymfonyComponentHttpKernelExceptionHttpException::class,     IlluminateDatabaseEloquentModelNotFoundException::class,     IlluminateSessionTokenMismatchException::class,     IlluminateValidationValidationException::class,];////public function render($request, Exception $exception){    return parent::render($request, $exception);}    /**     * Convert an authentication exception into an unauthenticated response.     *     * @param  IlluminateHttpRequest  $request     * @param  IlluminateAuthAuthenticationException  $exception     * @return IlluminateHttpResponse     */ protected function unauthenticated($request, AuthenticationException $exception) {    if ($request->expectsJson()) {     return response()->json(['error' => 'Unauthenticated.'],401);    }     $guard = array_get($exception->guards(), 0);      switch ($guard) {        case 'admin': $login = 'admin.login';        break;        default: $login = 'login';        break;      }        return redirect()->guest(route($login));  }

第12步:设置重定向中间件

要在身份验证后设置重定向中间件,请转到app / Http / Middleware / RedirectIfAuthenticated.php并使用以下代码更新代码:

//public function handle($request, Closure $next, $guard = null){        switch ($guard) {            case 'admin' :                if (Auth::guard($guard)->check()) {                    return redirect()->route('admin.home');                }                break;            default:                if (Auth::guard($guard)->check()) {                    return redirect()->route('home');                }                break;        }     return $next($request);}//

第13步:设置身份验证配置

要设置身份验证配置,请转至config / auth.php并使用以下代码更新代码:

//'defaults' => [        'guard' => 'web',        'passwords' => 'users',    ],'admins' => [        'driver' => 'eloquent',        'model' => AppAdmin::class,    ],////'guards' => [        'web' => [            'driver' => 'session',            'provider' => 'users',        ],        'api' => [            'driver' => 'token',            'provider' => 'users',        ],        'admin' => [            'driver' => 'session',            'provider' => 'admins',        ],        'admin-api' => [            'driver' => 'token',            'provider' => 'admins',        ],    ],////'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => AppUser::class,        ],       'admins' => [            'driver' => 'eloquent',            'model' => AppAdmin::class,        ],    ],////'passwords' => [        'users' => [            'provider' => 'users',            'table' => 'password_resets',            'expire' => 60,        ],        'admins' => [            'provider' => 'admins',            'table' => 'password_resets',            'expire' => 15,        ],    ],

第14步:设置数据库迁移默认字符串Lenth

要设置数据库迁移的默认字符串长度,请转到app / Providers / AppServiceProvider.php并使用以下代码更新代码:

use IlluminateSupportServiceProvider;use IlluminateSupportFacadesSchema;//public function boot(){    Schema::defaultStringLength(191);}

第15步:运行迁移

要运行迁移,请输入以下命令:

php artisan migrate

使用修补程序输入管理员登录凭据:

php artisan tinker$admin = new AppAdmin$admin->email = 'admin@app.com'$admin->password = Hash::make(’admin-password’)$admin->save()

希望您现在可以在Laravel项目中轻松设置多个身份验证。

以上就是如何在Laravel 5.6中设置多个身份验证的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的如何在Laravel5.6中设置多个身份验证全部内容,希望文章能够帮你解决如何在Laravel5.6中设置多个身份验证所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部