如何在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中设置多个身份验证所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。