2015-02-24 9 views

risposta

4

controlli di autenticazione sono fatti utilizzo del middleware in Laravel 5.

E il middleware per auth è App\Http\Middleware\Authenticate.

Quindi, è possibile modificarlo nel metodo handle del middleware.

27

Giusto per estendere @ risposta di finale:

  1. è necessario modificare App\Http\Middleware\Authenticate::handle() metodo e cambiare auth/login-/login.
  2. Quindi è necessario aggiungere la proprietà $loginPath alla classe \App\Http\Controllers\Auth\AuthController. Perché? Vedi Laravel source.

In seguito avrete questo nel vostro middleware:

namespace App\Http\Middleware; 
class Authenticate { 
     /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if ($this->auth->guest()) 
     { 
      if ($request->ajax()) 
      { 
       return response('Unauthorized.', 401); 
      } 
      else 
      { 
       return redirect()->guest('/login'); // <--- note this 
      } 
     } 

     return $next($request); 
    } 
} 

E questo nel vostro AuthController:

namespace App\Http\Controllers\Auth; 
class AuthController extends Controller 
{ 
    protected $loginPath = '/login'; // <--- note this 

    // ... other properties, constructor, traits, etc 
} 
+0

come posso fare questo in moduli middelware –

3

EDIT: Su laravel 5.1, sufficiente aggiungere protected $ redirectPath = '/ url/vuoi/tu'; per AuthController farebbe il trucco.

attinenza: http://laravel.com/docs/5.1/authentication#included-authenticating


Su laravel 5.1, è completamente spostato in un altro middleware chiamato RedirectIfAuthenticated.php sotto App \ Http \ Middleware

public function handle($request, Closure $next) 

{ 
    if ($this->auth->check()) { 
     return redirect('/'); //change this part to anywhere you wish to be redirected to 
    } 

    return $next($request); 
} 

Speranza che aiuta.

0

Dal momento che l'altra question è stato contrassegnato come duplicate..I cercherà di rispondere qui ..

In primo luogo è necessario per modificare il percorso come

<?php 
Route::get(config('constants.cms_path') . '/login', [ 
    'as' => 'login', 
    'uses' => 'Auth\[email protected]' 
]); 

Nella tua blade..make certo utilizzare la route denominata nel collegamento dell'URL di accesso come

{{ route('login') }} 

In middleware/Authenticate.php cambiare l'ospite reindirizzamento a

return redirect()->guest(config('constants.cms_path') . '/login'); 
0

La prego di uscite php artisan route:list prega

Hai ragione è possibile impostare i seguenti attributi:

protected $loginPath = 'xxx'; 

protected $redirectPath = 'xxx'; 

protected $redirectAfterLogout = 'xxx'; 

Impostare questo attributo a voi AuthController.php

25

Volevo fare la stessa cosa in Laravel 5.5. La gestione dell'autenticazione è stata spostata su Illuminate\Auth\Middleware\Authenticate che genera uno .

Tale eccezione viene gestita in Illuminate\Foundation\Exceptions\Hander.php, ma non si desidera modificare i file del fornitore originale, quindi è possibile sovrascriverlo con i propri file di progetto aggiungendolo a App\Exceptions\Handler.php.

Allo scopo, aggiungere il seguente al primo della classe Handler in App\Exceptions\Handler.php:

use Illuminate\Auth\AuthenticationException; 

e quindi aggiungere il seguente metodo, modificando, se necessario:

/** 
* Convert an authentication exception into an unauthenticated response. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Illuminate\Auth\AuthenticationException $exception 
* @return \Illuminate\Http\Response 
*/ 
protected function unauthenticated($request, AuthenticationException $exception) 
{ 
    if ($request->expectsJson()) { 
     return response()->json(['error' => 'Unauthenticated.'], 401); 
    } 

    return redirect()->guest('login'); //<----- Change this 
} 

basta cambiare return redirect()->guest('login'); a return redirect()->guest(route('auth.login')); o qualsiasi altra cosa.

Ho voluto scriverlo perché mi ci sono voluti più di 5 minuti per capirlo. Per favore mi mandi una riga se ti è capitato di trovarlo nei documenti perché non potevo.

+2

5 minuti? ... amico ... tutto sarà almeno 1 ora per me lol. – Fahmi

+2

Non modificare i file core, questa è una pessima idea e quando il compositore esegue un aggiornamento tutte le modifiche saranno sovrascritte. – twigg

+0

Risposta stupenda. +1 –

10

Questo è laravel 5.4 Soluzione:

C'è un nuovo metodo non autenticata() in app/Eccezioni/Handler.php che gestisce gli utenti non autenticati e reindirizza il login percorso.

Così cambia

return redirect()->guest('login'); 

a

return redirect()->guest('auth/login'); 
+0

Ciao @salil ho errore Spiacente, la pagina che stai cercando non è stata trovata. NotFoundHttpException in RouteCollection.php riga 161: quando si carica l'URL di accesso personalizzato. Posso sapere come risolvere questo problema? devo creare una nuova vista solo per il login personalizzato? – davidlee

+0

Cristo in bici, questo è cambiato di nuovo in Laravel 5.5. Il metodo 'unauthenticated()' è ora rimosso da App/Exceptions/Handler.php. È come con ogni versione che vogliono offuscare ulteriormente il funzionamento interno del sistema di autenticazione. Molto frustrante per quelli di noi che vogliono modificare, o anche solo capire, questo. – Inigo

+0

OK, soluzione Laravel 5.5 qui: https://stackoverflow.com/questions/45340855/laravel-5-5-change-unauthenticated-login-redirect-url – Inigo

0

Per modificare il reindirizzamento dopo il login, si deve solo andare a app/HTTP/Controller/Aut/LoginController.php e aggiungere che all'interno la classe LoginController:

protected $redirectTo = '/redirect-url-here'; 

lo stesso vale per il reindirizzamento dopo registrare un nuovo utenti, ma in quel case, su AuthController.php

0

Per Laravel 5.4 È possibile impostare $ redirectTo protetto = '/'; nel file LoginController.php. O in RegistersUsers.php file, è possibile

protected function registered(Request $request, $user) 
{ 
    return redirect('tosomeRoute'); 
    //Note: This code will run when 
    //The user has been registered 
} 
Problemi correlati