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

在以下部分中,我们将演示Laravel的内置身份验证功能。更具体地说,我将向您展示如何验证管理员用户和普通用户。
第1步:Laravel设置
使用composer设置Laravel项目。
composer create-project --prefer-dist laravel/laravel project-name
第2步:数据库配置
打开.env文件并在文件中设置数据库凭据。
DB_DATABASE= database-name DB_USERNAME= root DB_PASSWORD= database-password
第3步:身份验证
要使用Laravel的内置身份验证系统进行注册和登录,只需运行以下命令:
php artisan make:auth
第4步:设置模型和迁移
为管理员Admin创建和设置模型和迁移:
php artisan make:model Admin -m
要为Admin设置模型,请转到app / Admin.php并使用以下代码更新代码:
/**
* Remove 'use Illuminate\Database\Eloquent\Model;'
*/
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User 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 \Illuminate\Http\Response
*/
public function index()
{ return view('admin');
}}第6步:为管理员用户设置登录控制器
要创建Login控制器,请运行以下命令:
php artisan make:controller Auth/AdminLoginController
要设置登录控制器,请转到app / Http / Controllers / Auth / AdminLoginController.php并使用以下代码更新代码:
use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\AuthenticatesUsers;use Illuminate\Support\Facades\Auth;class AdminLoginController extends Controller{ /**
* Show the application’s login form.
*
* @return \Illuminate\Http\Response
*/
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 \Illuminate\Http\Response
*/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', 'Auth\AdminLoginController@showLoginForm')->name('admin.login');
Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');
Route::get('/home', 'AdminController@index')->name('admin.home');
});
//第11步:设置异常处理程序
要设置异常处理程序,请转到app / Exceptions / Handler.php并使用以下代码更新代码:
//
use Illuminate\Auth\AuthenticationException;
//
//
protected $dontReport = [
\Illuminate\Auth\AuthenticationException::class,
\Illuminate\Auth\Access\AuthorizationException::class,
\Symfony\Component\HttpKernel\Exception\HttpException::class,
\Illuminate\Database\Eloquent\ModelNotFoundException::class,
\Illuminate\Session\TokenMismatchException::class,
\Illuminate\Validation\ValidationException::class,
];
//
//
public function render($request, Exception $exception)
{
return parent::render($request, $exception);
}
/**
* Convert an authentication exception into an unauthenticated response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Auth\AuthenticationException $exception
* @return \Illuminate\Http\Response
*/
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' => App\Admin::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' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::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 Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
//
public function boot(){
Schema::defaultStringLength(191);
}第15步:运行迁移
要运行迁移,请输入以下命令:
php artisan migrate
使用修补程序输入管理员登录凭据:
php artisan tinker $admin = new App\Admin $admin->email = 'admin@app.com' $admin->password = Hash::make(’admin-password’) $admin->save()
希望您现在可以在Laravel项目中轻松设置多个身份验证。
以上就是如何在Laravel 5.6中设置多个身份验证的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号