Fórum Correção de Erro em arquitetura MVC com Laravel Framework #618144
25/05/2022
0
O projeto possuí dois tipos de usuários autenticados usando guards, cada um com um controller que faz a autenticação e o logout.
O problema é que o logout não funciona da maneira esperada, quando o usuário está logado ele consegue encerrar a sessão e sair tranquilamente mas o mesmo não acontece com o admin, que ao tentar encerrar a sessão apenas é redirecionado para a view login e a sessão continua ativa.
Segue os códigos
Rota Web
Rota Auth
Controller usuário (nesse controller que é feito o logout)
Também há o controller do admin que faz toda a autenticação mas para testes deixei o logout no mesmo controller do usuário para não precisar fazer duas rotas de logout, o problema principal é que somente o usuário efetua essa ação corretamente, a sessão do admin só é encerrada se eu logar como usuário e em seguida deslogar, nesse caso as duas são encerradas.
O problema é que o logout não funciona da maneira esperada, quando o usuário está logado ele consegue encerrar a sessão e sair tranquilamente mas o mesmo não acontece com o admin, que ao tentar encerrar a sessão apenas é redirecionado para a view login e a sessão continua ativa.
Segue os códigos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Route::get( '/' , function () { return redirect( 'login' ); }); Route::get( '/admin' , function () { return redirect( 'admin' ); }); Route::group([ 'middleware' => 'auth:web' ], function (){ Route::get( '/redeem' , function () { return view( 'user.redeem' ); })->name( 'redeem' ); }); Route::group([ 'middleware' => 'auth:admin' ], function (){ Route::get( '/dashboard' , function () { return view( 'admin.dashboard' ); })->name( 'dashboard' ); Route::resource( 'stockunit' , StockunitController:: class ); Route::resource( 'codelist' , CodeController:: class ); Route::resource( 'orderlist' , OrderController:: class ); }); require __DIR__. '/auth.php' ; |
Rota Web
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Route::middleware( 'guest' )->group( function () { Route::get( 'login' , [AuthenticatedSessionController:: class , 'create' ]) ->name( 'login' ); Route::post( 'login' , [AuthenticatedSessionController:: class , 'store' ]); Route::get( 'admin' , [AuthenticatedSessionAdminController:: class , 'create' ]) ->name( 'admin' ); Route::post( 'admin' , [AuthenticatedSessionAdminController:: class , 'store' ]); }); Route::middleware( 'auth' )->group( function () { Route::post( 'logout' , [AuthenticatedSessionController:: class , 'destroy' ]) ->name( 'logout' ); }); |
Rota Auth
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | class AuthenticatedSessionController extends Controller { /** * Display the login view. * * @return \Illuminate\View\View */ public function create() { return view( 'Uauth.login' ); } /** * Handle an incoming authentication request. * * @param \App\Http\Requests\Auth\LoginRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(LoginRequest $request ) { $request ->authenticate(); $request ->session()->regenerate(); return redirect( '/redeem' ); } /** * Destroy an authenticated session. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function destroy(Request $request ) { Auth::logout(); $request ->session()->invalidate(); $request ->session()->regenerateToken(); return redirect( '/' ); } } |
Controller usuário (nesse controller que é feito o logout)
Também há o controller do admin que faz toda a autenticação mas para testes deixei o logout no mesmo controller do usuário para não precisar fazer duas rotas de logout, o problema principal é que somente o usuário efetua essa ação corretamente, a sessão do admin só é encerrada se eu logar como usuário e em seguida deslogar, nesse caso as duas são encerradas.

Gargalo Games
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)