8

quando accedo con credenziali errate ho ottenuto la risposta giusta. quando accedo con le credenziali corrette la pagina di login si ricarica con 302 richieste ma non reindirizza mai alla pagina delle statistiche. quando metto a punto che ho scoperto che il codice va a questo authinticate.php nella cartella middleware, si reindirizzare allo stato ospite loginIl reindirizzamento dell'autenticazione non riesce

if (Auth::guard($guard)->guest()) { 
      if ($request->ajax() || $request->wantsJson()) { 
       return response('Unauthorized.', 401); 
      } else { 
       return redirect()->guest('login'); 
      } 
     } 

vedere il codice: -

percorso. php

Route::get('login', '[email protected]'); 
Route::post('signin', '[email protected]'); 
Route::get('signout', '[email protected]'); 


Route::group(['prefix' => 'api'], function() { 
    Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]); 
    Route::post('authenticate', '[email protected]'); 
}); 

Route::group(['middleware' => ['web']], function() { 
    Route::auth(); 
    Route::get('/', '[email protected]'); 
    Route::get('/statistics', '[email protected]'); 

}); 

Accesso controller

public function index() { 

     return view('login'); 
    } 

    public function signin(Request $request) { 

     $errors = []; 
     $email=$request['email']; 
     $password= $request['password']; 
     $credentials = array('email' => $email, 'password' => $password); 

     if(Auth::attempt($credentials)) 
     { 
      return redirect('/statistics'); 


     } 
     return "bad request"; 

    } 
    public function signout() 
    { 
     Auth::logout(); 
     return redirect('/login'); } 

} 

Statistiche controller

class StatisticsController extends Controller { 
    public function __construct() 
    { 
        $this->middleware('auth'); 

    } 
    public function index() { 

    return view('statistics')->with($data); 
    } 

public function statistics() { 
     return view('statistics'); 

    } 



} 

Kernal.php nota che non c'è biblioteca JWT auth Io lo uso per l'autenticazione riposante con solo l'applicazione mobile.

protected $middleware = [ 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    ]; 

    protected $middlewareGroups = [ 
     'web' => [ 
      \App\Http\Middleware\EncryptCookies::class, 
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
      \Illuminate\Session\Middleware\StartSession::class, 
      \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
      \App\Http\Middleware\VerifyCsrfToken::class, 
     ], 

     'api' => [ 
      'throttle:60,1', 
     ], 
    ]; 

    protected $routeMiddleware = [ 
     'auth' => \App\Http\Middleware\Authenticate::class, 
     'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
     'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
     'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
     'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken', 
     'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken' 
    ]; 

middleware/authenticate.php

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class Authenticate 
{ 

    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->guest()) { 
      if ($request->ajax() || $request->wantsJson()) { 
       return response('Unauthorized.', 401); 
      } else { 
       return redirect()->guest('login'); 
      } 
     } 

     return $next($request); 
    } 
} 
+0

I tutto il resto è un app di Laravel 5.2?L'app/Http/Middleware/Authenticate.php non è stata toccata? E i controller in 'app/Http/Controllers/Auth'? Puoi anche ripulire il tuo inglese nella tua domanda? Aggiunga almeno un po 'di punteggiatura - è difficile seguire dove finisce uno scenario e inizia il prossimo. – tremby

+0

la domanda non è chiara! –

+0

puoi mostrarmi il file \ App \ Http \ Middleware \ Authenticate ?? –

risposta

3

Controlla il tuo cache.I avuto un problema simile, dove ho perso un paio d'ore, in modo da questi in cui alcuni dei passi che ho fatto:

  • php percorso artigianale: chiari
  • chiaro del browser cache di
  • corsa aggiornamento compositore
  • Scarica una nuova copia di laravel (nuovo progetto), e poi unire lentamente pezzi di vostro codice nel nuovo progetto
1

Analisi rapida: Non non c'è nessun problema con il metodo di autenticazione, o il vostro controller. Il problema sta nel fatto che non hai un percorso per "/statistiche" E con Laravel almeno all'inizio della versione 5, devi essere esplicito sui tuoi percorsi "PS: hanno deprecato Route :: Controller()" proposito Route::get('/', '[email protected]'); Si riferisce alla propria applicazione percorso di base

Soluzione Aggiungere il percorso statistiche

Route::get('/statistics', '[email protected]'); 

per esempio.

+0

Era lì ma ho dimenticato di metterlo qui poiché ci sono molti percorsi nel progetto comunque non funziona ancora, reindirizzando per accedere Ho cercato per ore Grazie per la tua risposta comunque l'uomo –

1

Si sta reindirizzando a StatisticsController @ statistics ma non è stata definita alcuna funzione statistica in StatisticsController.

+0

c'è un metodo in il controller con questo nome, il problema si verifica nel metodo construct, Auth diventa guest quando viene reindirizzato –