php - route - redirect with data laravel
Redirección de Laravel 5.4 a url personalizada después de iniciar sesión (6)
Estoy usando Laravel Framework 5.4.10, y estoy usando la autenticación regular que
php artisan make:auth
proporciona. Quiero proteger toda la aplicación y redirigir a los usuarios a / themes después de iniciar sesión.
Tengo 4 controladores: ForgotPasswordController.php, LoginController.php, RegisterController.php y ResetPasswordController.php. He editado esta línea en los últimos tres:
protected $redirectTo = ''/themes'';
Esta es la primera línea en mis rutas / web.php:
Auth::routes();
He agregado esta función en mi Controller.php:
public function __construct()
{
$this->middleware(''auth'');
}
He editado la aplicación / Http / Middleware / RedirectIfAuthenticated.php, para que la función de manejo se vea así:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect(''/themes'');
}
return $next($request);
}
Todo está bien, excepto que cuando hago clic en el botón Iniciar sesión, me redirigen a "/", no a "/ themes". Si no necesito autenticación en los controladores (sin función __contruct en el archivo Controller.php), me redirigen OK al iniciar sesión. ¿Qué estoy haciendo mal?
De acuerdo con la documentación de Laravel , creo en la aplicación / Http / Controllers / Auth / LoginController.php el siguiente método:
protected function redirectTo()
{
$user=Auth::user();
if($user->account_type == 1){
return ''/admin'';
}else{
return ''/home'';
}
}
para obtener la información de usuario de mi base de datos, usé "Illuminate / Support / Facades / Auth;".
Debe establecer el valor $ redirectTo para enrutar que desea redirigir
$this->redirectTo = route(''dashboard'');
dentro del constructor AuthController.
/**
* Where to redirect users after login / registration.
*
* @var string
*/
protected $redirectTo = ''/'';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware($this->guestMiddleware(), [''except'' => ''logout'']);
$this->redirectTo = route(''dashboard'');
}
Eso es lo que estoy trabajando actualmente, qué coincidencia.
También necesita agregar las siguientes líneas en su LoginController
namespace App/Http/Controllers/Auth;
use App/Http/Controllers/Controller;
use Illuminate/Foundation/Auth/AuthenticatesUsers;
use Illuminate/Http/Request;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
protected function authenticated(Request $request, $user)
{
if ( $user->isAdmin() ) {// do your margic here
return redirect()->route(''dashboard'');
}
return redirect(''/home'');
}
/**
* Where to redirect users after login.
*
* @var string
*/
//protected $redirectTo = ''/admin'';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware(''guest'', [''except'' => ''logout'']);
}
}
La forma en que lo hice usando el rasgo AuthenticatesUsers.
/App/Http/Controllers/Auth/LoginController.php
Agregue este método a ese controlador:
/**
* Check user''s role and redirect user based on their role
* @return
*/
public function authenticated()
{
if(auth()->user()->hasRole(''admin''))
{
return redirect(''/admin/dashboard'');
}
return redirect(''/user/dashboard'');
}
Si observa el rasgo AuthenticatesUsers, verá que en el método sendLoginResponse se realiza una llamada a
$this->redirectPath()
.
Si observa este método, descubrirá que redirectTo puede ser un método o una variable.
Esto es lo que ahora tengo en mi controlador de autenticación.
public function redirectTo() {
$user = Auth::user();
switch(true) {
case $user->isInstructor():
return ''/instructor'';
case $user->isAdmin():
case $user->isSuperAdmin():
return ''/admin'';
default:
return ''/account'';
}
}
puede agregar el método en la línea de agregar LoginController
use App/User;
en la parte superior, después de este método de agregar, es trabajo para mí wkwkwkwkw, pero debe agregar
{{ csrf_field() }}
en ver administrador y usuario
protected function authenticated(Request $request, $user){
$user=User::where(''email'',$request->input(''email''))->pluck(''jabatan'');
$c=" ".$user." ";
$a=strcmp($c,'' ["admin"] '');
if ($a==0) {
return redirect(''admin'');
}else{
return redirect(''user'');
}}