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

小编典典

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

php artisan make:auth

两种模型:Users(已存在)和Admin

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

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并进行以下更改

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

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看起来像

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值