8

Когда я вхожу в систему с неправильными учетными данными, я получил правильный ответ. , когда я вхожу в систему с правильными учетными данными, перезагрузите страницу входа в систему с запросом 302 , но он никогда не перенаправляется на страницу статистики. , когда я его отладки я обнаружил, что код идет к этому authinticate.php в папке промежуточного слоя, этого перенаправление состояния гостевого входаОшибка перенаправления аутентификации

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

см код: -

маршрута. 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]'); 

}); 

Войти контроллер

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

} 

Статистика Контроллер

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 обратите внимание, что есть библиотека JWT аутентификации Я использую его для успокоительной аутентификации только с помощью мобильного приложения.

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' 
    ]; 

промежуточного слоя/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 s все остальное приложение Laravel 5.2?Является ли 'app/Http/Middleware/Authenticate.php' нетронутым? Как насчет контроллеров в 'app/Http/Controllers/Auth'? Можете ли вы также очистить свой английский в своем вопросе? По крайней мере, добавьте некоторую пунктуацию - трудно следовать, где заканчивается один сценарий, и начинается следующее. – tremby

+0

вопрос непонятен! –

+0

Можете ли вы показать мне файл \ App \ Http \ Middleware \ Authenticate? –

ответ

3

Проверьте ваш cache.I была аналогичная проблема, где я потерял пару часов, так что это, где некоторые из шагов, которые я сделал:

  • PHP ремесленник маршрут: четкие
  • ясно браузера кэш
  • прогон композитор
  • Скачать свежую копию Laravel (новый проект), а затем медленно сливаться кусками кода в новый проект
1

Быстрый анализ: Там нет никаких проблем с методом аутентификации, или контроллеров. Проблема заключается в том, что у вас нет маршрута для «/statistics» И с Laravel по крайней мере с начальной версией 5 вы должны быть четко о своих маршрутах «PS: они устарели Route :: Controller()» Кстати Route::get('/', '[email protected]'); Относится к прикладному базовому маршруту

Solution Добавить для маршрута статистика

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

Например.

+0

Он был там, но я забыл поместить его здесь, поскольку в проекте есть много маршрутов , в любом случае он по-прежнему не работает, перенаправление на логин Я пытался часами Спасибо за ваш ответ в любом случае, человек –

1

Вы перенаправляетесь на статистику StatisticsController @, но в вашем Статистическом контроле нет функции статистики.

+0

есть способ в контроллер с этим именем, проблема возникает в методе построения, Auth становится гостем при перенаправлении –

Смежные вопросы