Dopo molte ricerche e molte domande e risposte sono finalmente riuscito a lavorare su Laravel 5.2 Multi Auth con due tabelle, quindi sto scrivendo la risposta alla mia domanda.
Come implementare Multi Auth in Larvel 5.2
Come menzionato sopra. Due tavoli admin
eusers
Laravel 5.2 ha un nuovo artisan
comando.
php artisan make:auth
genererà base di login / registro route
, view
e controller
per la user
tavola.
Crea una admin
tabella come users
tabella per semplicità.
Controller per amministratore
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(nota: ho appena copiato questi file da app/Http/Controllers/Auth/AuthController
qui)
config/auth.php
//Authenticating guards
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
//User Providers
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
//Resetting Password
'passwords' => [
'clients' => [
'provider' => 'client',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
'admins' => [
'provider' => 'admin',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
],
route.php
Route::group(['middleware' => ['web']], function () {
//Login Routes...
Route::get('/admin/login','AdminAuth\AuthController@showLoginForm');
Route::post('/admin/login','AdminAuth\AuthController@login');
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', 'AdminController@index');
});
AdminAuth/AuthController.php
Aggiungi due metodi e specifica $redirectTo
e$guard
protected $redirectTo = '/admin';
protected $guard = 'admin';
public function showLoginForm()
{
if (view()->exists('auth.authenticate')) {
return view('auth.authenticate');
}
return view('admin.auth.login');
}
public function showRegistrationForm()
{
return view('admin.auth.register');
}
ti aiuterà ad aprire un altro modulo di accesso per l'amministratore
creazione di un middleware per admin
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('/');
}
return $next($request);
}
}
registra il middleware in kernel.php
protected $routeMiddleware = [
'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
];
usa questo middleware per AdminController
es.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
public function __construct(){
$this->middleware('admin');
}
public function index(){
return view('admin.dashboard');
}
}
È tutto ciò che serve per farlo funzionare e anche per ottenere json dall'uso autenticato dell'amministratore
Auth::guard('admin')->user()
Modifica - 1
È possibile accedere direttamente all'utente autenticato utilizzando,
Auth::user()
ma se si dispone di due tabelle di autenticazione, è necessario utilizzarle
Auth::guard('guard_name')->user()
per il logout
Auth::guard('guard_name')->user()->logout()
per l'utente autenticato json
Auth::guard('guard_name')->user()
Modifica 2
Ora puoi scaricare il progetto implementato di Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
protected $guard = 'guard_name'
può essere usato ora.