如何在Laravel5.6中设置多个身份验证

如何在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中设置多个身份验证所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com