Eu estou tentando autenticar usuários e tabela de formulário de administradoruser
e admin
tabela, respectivamente. Estou usando o User
modelo fornecido pelo laravel e criei o mesmo, pois Admin.
adicionei uma chave de guarda e uma chave de provedor noauth.php.
Guardas
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
Fornecedores
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
Rotas
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');
});
Eu criei um diretório chamado AuthAdmin
onde os arquivos AuthController.php
e o padrão do Laravel PasswordController.php
estão presentes. (Namespace modificado de acordo)
Antes de tudo, nos documentos do Laravel mencionamos como especificar a guarda personalizada enquanto se autentica como esta, que não está funcionando.
Há outro método mencionado nos documentos do Laravel para usar um guarda que também não está funcionando.
Seria benéfico se alguém pudesse resolver os problemas e me corrigir se eu estiver errado.
fonte
protected $guard = 'guard_name'
pode ser usado agora.Respostas:
Depois de muita pesquisa e muitas perguntas e respostas, finalmente consegui trabalhar com o Laravel 5.2 Multi Auth com duas tabelas, então estou escrevendo a resposta da minha própria pergunta.
Como implementar o Multi Auth no Larvel 5.2
Como acima mencionado. Duas mesa
admin
eusers
O Laravel 5.2 tem um novo
artisan
comando.php artisan make:auth
ele irá gerar básica login / registo
route
,view
econtroller
para auser
mesa.Faça uma
admin
mesa comousers
mesa para simplificar.Controller For Admin
app/Http/Controllers/AdminAuth/AuthController
app/Http/Controllers/AdminAuth/PasswordController
(nota: acabei de copiar esses arquivos
app/Http/Controllers/Auth/AuthController
daqui)config/auth.php
route.php
AdminAuth/AuthController.php
Adicione dois métodos e especifique
$redirectTo
e$guard
isso ajudará você a abrir outro formulário de login para administrador
criando um middleware para
admin
}
registrar middleware em
kernel.php
use esse middleware em
AdminController
, por exemplo,Isso é tudo o que é necessário para fazê-lo funcionar e também para obter o json do uso de administrador autenticado
Auth::guard('admin')->user()
Editar - 1
Podemos acessar o usuário autenticado diretamente usando,
Auth::user()
mas se você tiver duas tabelas de autenticação, precisará usarpara sair
para usuário autenticado json
Editar 2
Agora você pode fazer o download do Projeto implementado em Laravel 5.2 Multiauth http://imrealashu.in/code/laravel/multi-auth-with-laravel-5-2-2/
fonte
if (Auth :: guard ($ guard) -> check ()) { return redirect ('/'); }
Após a alteração:if (Auth :: guard ('yourcustomguard') -> check () || Auth :: check ()) { return redirect ('/'); }
Caso isso ajude alguém, e isso pode ser devido à minha falta de entendimento do middleware, aqui está o que eu tenho que fazer para que isso funcione (além das etapas executadas por @imrealashu) ...
Em
route.php
:Este está no
web
grupo de middleware. Antes disso, tentei colocá-lo em umadmin
grupo de middleware separado e até em umauth:admin
grupo, mas isso não funcionou, só funcionou para mim quando especifiquei o middleware como administrador na própria rota. Não faço ideia do porquê, mas espero que isso evite que outros arrancem os cabelos, como eu fiz.fonte
Route::group(['middleware' => ['admin']], function () { //Admin Routes... });
causa não está trabalhando para mimÉ muito fácil no laravel 5.6. Basta ir
config/auth.php
e adicionar esta linha naproviders
matriz:Observe que usamos o
database
driver nãoeloquent
.Agora adicione isso ao
guards
array:Agora terminamos! Use isso ao trabalhar com a tabela de administradores:
Felicidades.
fonte