usuarios tablas tabla rutas relacionadas registro proteger personalizado obtener modificar example diferente datos con campos auth autenticacion php laravel-5

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.



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/