Estoy tratando de autenticar a los usuarios y la tabla de formularios de administraciónuser
y la admin
tabla respectivamente. Estoy usando el User
modelo provisto por laravel fuera de la caja y creé el mismo porque Admin.
he agregado una clave de protección y una clave de proveedor enauth.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');
});
He creado un directorio llamado AuthAdmin
donde están presentes el valor predeterminado de Laravel AuthController.php
y los PasswordController.php
archivos. (Espacio de nombres modificado en consecuencia)
En primer lugar, en los documentos de Laravel se menciona que cómo especificar la protección personalizada mientras se autentica de esta manera, lo que no funciona.
Hay otro método mencionado en los documentos de Laravel para usar un guardia que tampoco funciona.
Sería beneficioso si alguien pudiera resolver los problemas y corregirme si me equivoco.
fuente
protected $guard = 'guard_name'
Se puede usar ahora.Respuestas:
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
ycontroller
deuser
mesa.Haga una
admin
tabla comousers
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
route.php
AdminAuth/AuthController.php
Agregue dos métodos y especifique
$redirectTo
y$guard
te ayudará a abrir otro formulario de inicio de sesión para administrador
creando un middleware para
admin
}
registrar middleware en
kernel.php
use este middleware en
AdminController
, por ejemplo,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 usarpara cerrar sesión
para el usuario autenticado json
Editar 2
Ahora puede descargar el proyecto implementado Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
fuente
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
después del cambio:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
En caso de que esto ayude a alguien, y esto puede deberse a mi falta de comprensión del middleware, esto es lo que tuve que hacer para que esto funcionara (además de los pasos tomados por @imrealashu) ...
En
route.php
:Esto está en el
web
grupo de middleware. Antes de esto, intenté ponerlo en unadmin
grupo de middleware separado e incluso en unauth:admin
grupo, pero esto no funcionó, solo funcionó para mí cuando especifiqué el middleware como administrador en la ruta misma. No tengo idea de por qué esto es así, pero espero que evite que otros se quiten el cabello como lo hice yo.fuente
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
porque no me funcionaEs muy fácil en laravel 5.6. Simplemente vaya
config/auth.php
y agregue esta línea en laproviders
matriz:Tenga en cuenta que utilizamos
database
para el controlador noeloquent
.Ahora agregue esto a la
guards
matriz:Ahora hemos terminado! Use esto cuando trabaje con la tabla de administradores:
Salud.
fuente