8

Po zalogowaniu z błędnymi danymi uzyskałem właściwą odpowiedź. po zalogowaniu się przy użyciu prawidłowych danych logowania strona logowania jest ponownie ładowana z 302 żądaniem , ale nigdy nie przekierowuje na stronę statystyk. gdy debugować go znalazłem, że kod idzie do tej authinticate.php w folderze Middleware przekierowanie do stanu logowania gośćPrzekierowania uwierzytelniające się nie powiodły

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

zobaczyć kod: -

Route. 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]'); 

}); 

Zaloguj Kontroler

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'); } 

} 

Statystyki 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 pamiętać, że istnieje biblioteka JWT auth Używam go do uwierzytelniania spokojny tylko z aplikacji mobilnej.

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 Czy wszystko inne jest aplikacją Laravel 5.2?Czy 'app/Http/Middleware/Authenticate.php' jest nietknięty? A co z kontrolerami w 'app/Http/Controllers/Auth'? Czy możesz również posprzątać swój angielski w swoim pytaniu? Wystarczy dodać trochę interpunkcji - trudno jest śledzić, gdzie kończy się jeden scenariusz, a zaczyna następny. – tremby

+0

pytanie jest niejasne! –

+0

możesz pokazać mi plik \ App \ Http \ Middleware \ Authenticate? –

Odpowiedz

3

Sprawdź swoją cache.I miał podobny problem, gdzie straciłem kilka godzin, więc te, gdzie niektóre kroki zrobiłem:

  • php rzemieślnik trasy: Przezroczysty
  • jasne przeglądarce cache
  • prowadzony zmiana kompozytor
  • Pobierz nową kopię laravel (nowy projekt), a następnie powoli łączyć fragmenty kodu do nowego projektu
1

Szybkie Analiza: Nie ma problemu z metody uwierzytelniania lub kontrolerów. Problem polega na tym, że nie masz trasy dla "/statystyk" I z Laravel co najmniej od wersji 5, musisz jasno określić swoje trasy "PS: wycofali Route :: Controller()” Nawiasem mówiąc Route::get('/', '[email protected]'); odnosi się do wniosku trasie podstawowej

Rozwiązanie dodać ROUTE statistics

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

na przykład.

+0

To było, ale zapomniałem umieścić tutaj, ponieważ istnieje wiele tras w projekcie mimo to nadal nie działa, przekierowanie do logowania Próbowałem godzinami Dzięki za odpowiedź i tak człowiek –

1

Przekierowujesz do statystyk StatisticsController @, ale w twoim StatisticsController nie zdefiniowano żadnej funkcji statystycznej.

+0

jest metoda w kontroler o tej nazwie, problem występuje w metodzie konstruowania, Auth staje się gościem po przekierowaniu –