Después de muchas excavaciones y muchas preguntas y respuestas, finalmente logré trabajar Laravel 5.2 Multi Auth con dos tablas, así que estoy escribiendo Respuesta de mi propia pregunta.
Cómo implementar Multi Auth en Larvel 5.2
Como se ha mencionado más arriba. Dos mesa admin
yusers
Laravel 5.2 tiene un nuevo artisan
comando.
php artisan make:auth
generará conectar / registrarse básica route
, view
y controller
de user
mesa.
Haga una admin
tabla como users
tabla para simplificar.
Controller For Admin
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(nota: acabo de copiar estos archivos desde 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 administrador
creando un middleware para 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,
];
use 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');
}
}
Todo eso es necesario para que funcione 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 debe usar
Auth::guard('guard_name')->user()
para cerrar sesión
Auth::guard('guard_name')->user()->logout()
para el usuario autenticado json
Auth::guard('guard_name')->user()
Editar 2
Ahora puede descargar el proyecto implementado Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
protected $guard = 'guard_name'
Se puede usar ahora.