在以下部分中,我们将演示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教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答