Laravel 5.2 多用户认证实现

Artisan命令

php artisan make:model Admin –migration

php artisan make:auth

php artisan make:controller Admin/AuthController

php artisan migrate

php artisan make:controller AdminController

auth.php

<?php

return [

'defaults' => [        

​ ‘guard’ => ‘web’,

    'passwords' => 'users',    ],

'guards' => [

    'web' => [

        'driver' => 'session',

        'provider' => 'users',

    ],

    'admin' => [

        'driver' => 'session',

        'provider' => 'admins',

    ],

    'api' => [

        'driver' => 'token', 

        'provider' => 'users',

    ],

],

'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' => 'admin_password_resets',

        'expire' => 60,

    ],

],

];

routes.php

Route::group([‘middleware’ => [‘web’]], function () {

Route::get('admin/login', 'Admin\AuthController@getLogin');

Route::post('admin/login', 'Admin\AuthController@postLogin');

Route::get('admin/register', 'Admin\AuthController@getRegister');

Route::post('admin/register', 'Admin\AuthController@postRegister');

Route::get('admin', 'AdminController@index');

});

Admin.php

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable{

protected $fillable = [

    'name', 'email', 'password',

];

protected $hidden = [

    'password', 'remember_token',

];

}

Admin\AuthController.php:

<?php

namespace App\Http\Controllers\Admin;

use App\Admin;

use Validator;

use App\Http\Controllers\Controller;

use Illuminate\Foundation\Auth\ThrottlesLogins;

use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller{

use AuthenticatesAndRegistersUsers, ThrottlesLogins;

protected $redirectTo = '/admin';

protected $guard = 'admin';

protected $loginView = 'admin.login';

protected $registerView = 'admin.register';

public function __construct()

{

    $this->middleware('guest', ['except' => 'logout']);

}

protected function validator(array $data)    {

    return Validator::make($data, [

        'name' => 'required|max:255',

        'email' => 'required|email|max:255|unique:users',

        'password' => 'required|confirmed|min:6',

    ]);

}

protected function create(array $data)    {

    return Admin::create([

        'name' => $data['name'],

        'email' => $data['email'],

        'password' => bcrypt($data['password']),

    ]);

}

}

AdminController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use App\Http\Controllers\Controller;

use Auth;

class AdminController extends Controller{

public function __construct()

{

    $this->middleware('auth');

}

public function index()

{

    $admin = Auth::guard('admin')->user();

    return $admin->name;

}

}

HomeController.php

<?php

namespace App\Http\Controllers;

use App\Http\Requests;

use Illuminate\Http\Request;

use Auth;

class HomeController extends Controller{

public function __construct()

{

    $this->middleware('auth');

}

public function index()

{

    $user = Auth::user();

    return $user->name;

}

}

视图文件修改

cp resources/views/auth resources/views/admin

修改resources/views/admin目录下表单提交地址:

/login -> /admin/login

/register -> /admin/register