有谁知道如何在laravel 5.2中使用多重身份验证! 我想使用它,但我不知道如何? 没有人有教程或项目设置多重身份验证吗?
您需要两个表,users并admins 在命令后运行Run命令以创建内置身份验证
users
admins
php artisan make:auth
两种模型:Users(已存在)和Admin
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { }
现在打开config / auth.php并进行以下更改
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], 'admins' => [ 'provider' => 'admins', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], ],
创建一个新的中间件 RedirectIfNotAdmin
RedirectIfNotAdmin
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RedirectIfNotAdmin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = 'admin') { if (!Auth::guard($guard)->check()) { return redirect('/admin/login'); } return $next($request); } }
Kernel.php中的更改
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, ]; protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, //\Illuminate\Session\Middleware\StartSession::class, //\Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, ], 'api' => [ 'throttle:60,1', ], ]; protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class, ];
创建一个新文件夹Http / Controller / Adminauth并从Http / Controller / Auth文件夹复制文件
打开文件Http / Controller / Adminauth / AuthController.php并进行以下更改
<?php namespace App\Http\Controllers\Adminauth; use App\Admin; use Validator; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\ThrottlesLogins; use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; use Auth; class AuthController extends Controller { use AuthenticatesAndRegistersUsers, ThrottlesLogins; protected $redirectTo = '/admin'; protected $guard = 'admin'; public function showLoginForm() { if (Auth::guard('admin')->check()) { return redirect('/admin'); } return view('admin.auth.login'); } public function showRegistrationForm() { return view('admin.auth.register'); } public function resetPassword() { return view('admin.auth.passwords.email'); } public function logout(){ Auth::guard('admin')->logout(); return redirect('/admin/login'); } }
创建新文件夹Http / Controller / admin,从Http / Controller /复制该文件夹中的Controller.php文件
创建新文件Http / Controller / admin / employee.php
<?php namespace App\Http\Controllers\admin; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Auth; use App\Admin; class Employee extends Controller { public function __construct(){ $this->middleware('admin'); } public function index(){ return view('admin.home'); } }
移至资源/视图创建新的文件夹资源/视图/管理员副本
resources/views/auth, resources/views/layouts & resources/views/home.blade.php
并发布resources/views/admin并打开admin文件夹中的每个文件,并在每个路径之前添加admin,现在该路径应如下所示
resources/views/admin
@extends('admin.layouts.app')
和您的Http / routes.php看起来像
<?php Route::get('/', function () { return view('welcome'); }); Route::get('/admin/login','Adminauth\AuthController@showLoginForm'); Route::post('/admin/login','Adminauth\AuthController@login'); Route::get('/admin/password/reset','Adminauth\PasswordController@resetPassword'); Route::group(['middleware' => ['admin']], function () { //Login Routes... Route::get('/admin/logout','Adminauth\AuthController@logout'); // Registration Routes... Route::get('admin/register', 'Adminauth\AuthController@showRegistrationForm'); Route::post('admin/register', 'Adminauth\AuthController@register'); Route::get('/admin', 'Admin\Employee@index'); }); Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/home', 'HomeController@index'); });
多数民众赞成在浏览器中打开您的网站,并检查并为管理员yoursiteurl / admin
请享用....