在以下部分中,我們將演示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教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答