一尘不染

如何在Laravel 5.2中使用多重身份验证

php

有谁知道如何在laravel 5.2中使用多重身份验证!
我想使用它,但我不知道如何?
没有人有教程或项目设置多重身份验证吗?


阅读 357

收藏
2020-05-29

共1个答案

一尘不染

您需要两个表,usersadmins 在命令后运行Run命令以创建内置身份验证

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

<?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,现在该路径应如下所示

@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

请享用....

2020-05-29