php - rutas - Cómo usar la autenticación para múltiples tablas en Laravel 5
obtener datos de tablas relacionadas laravel (3)
Antes de leer lo siguiente, se supone que debes tener conocimientos básicos sobre ServiceProvider, Facade y IoC en Laravel 5. Aquí vamos.
De acuerdo con el documento de Laravel, puede encontrar que Fachada ''Auth'' hace referencia al Illuminate/Auth/AuthManager
, que tiene un __call mágico (). Se puede ver que la función principal no está en AuthManager , sino en Illuminate/Auth/Guard
Guardia tiene un proveedor. Este proveedor tiene una propiedad de $model
, según la cual EloquentUserProvider
crearía este modelo por "new $model"
. Esto es todo lo que necesitamos saber. Aquí va el código.
1. Necesitamos crear un AdminAuthServiceProvider
.
public function register(){
Auth::extend(''adminEloquent'', function($app){
// you can use Config::get() to retrieve the model class name from config file
$myProvider = new EloquentUserProvider($app[''hash''], ''/App/AdminModel'')
return new Guard($myProvider, $app[''session.store'']);
})
$app->singleton(''auth.driver_admin'', function($app){
return Auth::driver(''adminEloquent'');
});
}
2.Facade:
class AdminAuth extends Facade {
protected static function getFacadeAccessor() { return ''auth.driver_admin''; }
}
3. agregue el alias a Kernel:
''aliases'' => [
//has to be beneath the ''Auth'' alias
''AdminAuth'' => ''/App/Facades/AdminAuth''
]
Espero que esto pueda ser útil.
A veces, nos gustaría separar a los usuarios y administradores en diferentes 2 tablas.
Creo que es una buena práctica
Así que estaba buscando si eso es posible en Laravel 5.
Después de una búsqueda rápida, encontré que muchas personas tenían la misma pregunta que la mía.
Encontré algunas respuestas, pero no creo que ninguna de ellas sea lo suficientemente buena.
Por lo tanto, dediqué un tiempo a profundizar en el código fuente y finalmente encontré la forma de lograrlo.
hay buenos paquetes para manejar multi auth. revisa estos enlaces:
paquete sboo multiauth
Creé un paquete laravel donde puedes manejar autenticación múltiple.
Paso 1: el compositor requiere
En primer lugar, el compositor requiere el paquete multiauth
composer require sarav/laravel-multiauth dev-master
Paso 2: Reemplazar el proveedor de servicios de autenticación predeterminado
Reemplazar
Illuminate/Auth/AuthServiceProvider::class
con
Sarav/Multiauth/MultiauthServiceProvider
en su archivo config / app.php
Paso 3: modifica auth.php
Modifique su archivo config / auth.php a algo como esto
''multi'' => [
''user'' => [
''driver'' => ''eloquent'',
''model'' => App/User::class,
''table'' => ''users''
],
''admin'' => [
''driver'' => ''eloquent'',
''model'' => App/Admin::class,
''table'' => ''admins''
]
],
¡Eso es! Ahora puede probar la autenticación múltiple pasando al usuario como primer parámetro. Por ejemplo
/Auth::loginUsingId("user", 1); // Login user with id 1
/Auth::loginUsingId("admin", 1); // Login user with id 1
// Attempts to login user with email id [email protected]
/Auth::attempt("user", [''email'' => ''[email protected]'', ''password'' => ''password'']);
// Attempts to login admin with email id [email protected]
/Auth::attempt("admin", [''email'' => ''[email protected]'', ''password'' => ''password'']);
Para una documentación más detallada
http://sarav.co/blog/multiple-authentication-in-laravel/
http://sarav.co/blog/multiple-authentication-in-laravel-continued/