2017-02-02 2 views
0

웹 응용 프로그램을 laravel 4.2에서 laravel 5.2로 업그레이드하는 중입니다. 나는 대부분의 문제를 해결할 수 있었지만,이 특별한 문제가 나를 이끌고있다.사용자가 로그인하지 않은 상태에서 Laravel 웹 미들웨어 그룹이 페이지를 표시합니다.

Route::group(['middleware' => 'web','prefix' => 'adm'], function() 
{ 
     Route::get('login', ['as' => 'admin.login.view', 'uses' => '[email protected]']); 
     Route::post('login', ['as' => 'admin.login.attempt', 'uses' => '[email protected]']); 
     Route::get('logout', ['as' => 'admin.logout', 'uses' => '[email protected]']); 

...other routes pertaining to admin dashboard 
} 

로그인 기능 및 관리자 패널 작업 내의 모든 기능이 예상대로 :

이 관리 대시 보드에 대한 경로 그룹처럼 보이는 방법이다. 유일한 문제는 사용자가 로그 아웃 할 때 관리자 패널의 나머지 경로에 액세스 할 수있는 경우입니다 (로그인 필요 없음). Auth :: check()를 배치하고 다양한 컨트롤러에서 인증을 확인 했으므로 로그인과 로그 아웃이 예상대로 작동합니다.

사용자가 로그인하지 않은 경우 Auth :: check()가 실패하고 사용자가 로그인 한 경우 통과합니다. 이 그룹 내의 모든 경로에 로그인 한 사용자 만 액세스 할 수있는 방법을 확인하려면 어떻게해야합니까? 필자는 authAdmin이라는 다른 미들웨어를 만들려고 시도했으며 웹 미들웨어 대신이를 사용하려고했습니다. 이 경우 로그인 할 수도 없습니다.

+0

두 세션 aintain? 일반 사용자 및 관리자와 마찬가지로 –

+0

현재 나는 그렇게하지 않습니다. 그러나 이상적으로 나는 일반 사용자와 관리자 사용자를 위해 2 세션을 유지하고 싶습니다. – pixelscreen

+1

사용자 세션이 만료 된 후에도 사용자가 로그인 한 경우에만 액세스해야하는 페이지에 액세스 할 수 있습니까? 그렇다면 문제는 "인증"경로를 어떻게 처리하는지에 달려 있다고 생각합니다. 컨트롤러 또는 라우트 그룹에서 호출하고 있습니까? –

답변

0

나는 로그인에 대한 새로운 미들웨어를 만들고 페이지에 경로 파일에서 Kenel.php 레지스터 로그인 클래스

protected $routeMiddleware = [ 
    'login'  => \App\Http\Middleware\Login::class, 
    ... 

에서이

namespace App\Http\Middleware; 

use Closure; 
class Login 
{ 
    public function handle($request, Closure $next) 
    { 
     $messages = config('message'); 

     if ($request->session()->has('userId')) { 
      return $next($request); 
     } 

     return redirect('/')->withErrors("Please login first"); 
    } 
} 

같이

Route::group(['middleware' => ['web'],'prefix' => 'adm'], function() { 

    Route::get('login', ['as' => 'admin.login.view', 'uses' => '[email protected]']); 
    Route::post('login', ['as' => 'admin.login.attempt', 'uses' => '[email protected]']); 
    Route::get('logout', ['as' => 'admin.logout', 'uses' => '[email protected]']); 

    Route::group(['middleware' => 'login'], function() { 
     [Your other route here] 
    }); 
)}; 

희망이 도움

+0

감사합니다. 이미 알아 냈습니다. 당신의 대답을 받아 들일 것입니다. – pixelscreen

관련 문제