如何在Laravel 5.2中使用多重身份验证 [英] How to use multi Auth in laravel 5.2

查看:77
本文介绍了如何在Laravel 5.2中使用多重身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Does anyone know how to use multi authenticate in laravel 5.2 !
I want to use It but I don't know how ?
does anyone has a tutorial or project setting up multi authentication?

推荐答案

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

You need two tables users and admins Run command following command to create built in auth

php artisan make:auth

两个模型Users(已经存在)和Admin

Two models Users(Already exist) and Admin

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{
	
}

现在打开config/auth.php并进行以下更改

Now open config/auth.php and make the following changes

'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中的更改

Changes in 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文件夹复制文件

Create a new folder Http/Controller/Adminauth and copy the files from Http/Controller/Auth folder

打开文件Http/Controller/Adminauth/AuthController.php并进行以下更改

Open the file Http/Controller/Adminauth/AuthController.php and make the following changes

<?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/

Create new folder Http/Controller/admin, copy Controller.php file in the folder from Http/Controller/

创建新文件Http/Controller/admin/employee.php

create new file 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');
    }
}

移动到资源/视图创建新的文件夹资源/视图/管理员 复制

move to resources/views create new folder resources/views/admin copy

resources/views/auth, resources/views/layouts & resources/views/home.blade.php

并发布到resources/views/admin并打开admin文件夹中的每个文件,并在每个路径之前添加admin,现在该路径应类似于

and post into resources/views/admin and open the each file in admin folder and add admin before each path, Now the path should look like

@extends('admin.layouts.app')

和您的Http/routes.php看起来像

and your Http/routes.php look like

<?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

Thats it open your site in browser and check and for admin yoursiteurl/admin

享受....

这篇关于如何在Laravel 5.2中使用多重身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆