¿Alguien puede explicar Laravel 5.2 Multi Auth con el ejemplo

Lo que he hecho hasta ahora.
Estoy tratando de autenticar a los usuarios y a user mesa de admin user y la tabla de admin , respectivamente.
Estoy usando el modelo de User proporcionado por laravel y creé exactamente lo mismo para Admin .
He agregado una clave de guardia y una clave de proveedor en auth.php

Guardias

 'guards' => [ 'user' =>[ 'driver' => 'session', 'provider' => 'user', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admin', ], ], 

Proveedores

 'providers' => [ 'user' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'admin' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ] ], 

Rutas

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

AuthAdmin un directorio llamado AuthAdmin donde están presentes los archivos predeterminados AuthController.php y PasswordController.php Laravel. (Espacio de nombres modificado en consecuencia)

En primer lugar, en los documentos de Laravel se mencionó cómo especificar guardia personalizada mientras se autentica de esta manera, lo que no funciona.
enter image description here

Hay otro método mencionado en los documentos de Laravel para usar un protector que tampoco funciona.

enter image description here

Sería muy útil si alguien pudiera resolver los problemas y corregirme si me equivoco.

Después de muchas excavaciones y muchas preguntas y respuestas, finalmente me las arreglé para trabajar en Laravel 5.2 Multi Auth con dos tablas, así que estoy escribiendo la respuesta a mi propia pregunta.

Cómo implementar Multi Auth en Larvel 5.2

Como se ha mencionado más arriba. admin y users dos tablas

Laravel 5.2 tiene un nuevo comando de artisan .

php artisan make:auth

generará una route básica de inicio / registro, view y controller para user tabla de user .

Cree una tabla admin como tabla de users para simplificar.

Controlador para el administrador
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(nota: acabo de copiar estos archivos de la app/Http/Controllers/Auth/AuthController aquí)

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

Agregue dos métodos y especifique $redirectTo y $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'); } 

te ayudará a abrir otro formulario de inicio de sesión para el administrador

creando un middleware para el 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); } 

}

registrar middleware en kernel.php

  protected $routeMiddleware = [ 'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class, ]; 

utilice este middleware en AdminController , por ejemplo,

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

Eso es todo lo que se necesita para hacerlo funcionar y también para obtener json de uso de administrador autenticado
Auth::guard('admin')->user()

Editar – 1
Podemos acceder al usuario autenticado directamente usando
Auth::user() pero si tiene dos tablas de autenticación, entonces tiene que usar

 Auth::guard('guard_name')->user() 

para desconectarse

 Auth::guard('guard_name')->user()->logout() 

para el usuario autenticado json

 Auth::guard('guard_name')->user() 

Editar 2

Ahora puede descargar Laravel 5.2 Multiauth implementado Proyecto http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/

En caso de que esto ayude a alguien, y esto puede deberse a mi falta de comprensión del middleware, esto es lo que tengo que hacer para que esto funcione (además de los pasos dados por @imrealashu) …

En route.php :

 Route::get('/admin', [ 'middleware' => 'admin', 'uses' => 'AdminController@index' ]); 

Esto está en el grupo de middleware web . Antes de esto intenté ponerlo en un grupo separado de middleware de admin e incluso en un grupo auth:admin pero esto no funcionó, solo funcionó para mí cuando especifiqué el middleware como administrador en la ruta misma. No tengo idea de por qué es esto, pero espero que evite que otros se tomen el pelo como yo.

En Laravel hay muchos paquetes de generador de panel de administración disponibles. Prefiero Voyager Admin. Instalarlos fácil y brisa. Puede ahorrarle toneladas de código. Solo necesitas entender cómo funciona. No reinventar la rueda.

Voyager – The Missing Laravel Admin

Una aplicación de Laravel con Gentelella bootstrap admin tempalte.