首页 > 编程 > PHP > 正文

如何在Laravel 5.6中设置多个身份验证

2020-03-22 19:29:25
字体:
来源:转载
供稿:网友
在本文中,我们将介绍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 Illuminate/Database/Eloquent/Model; use Illuminate/Notifications/Notifiable;use Illuminate/Foundation/Auth/User as Authenticatable;html' target='_blank'>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 >

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

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

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

//  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教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表