2017-02-02 5 views
0

Webアプリケーションをlaravel 4.2からlaravel 5.2にアップグレードしようとしています。私は問題のほとんどを解決することに成功しましたが、この特定の問題は私をループに導いています。予想通りLaravel Webミドルウェアグループは、ユーザーがログインしていないときのページを表示します

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()を配置し、さまざまなコントローラで認証をチェックしました。ログインとログアウトは期待どおりに動作します。

ユーザーがログインしていない場合は認証に失敗し、ユーザーがログインしている場合は失敗します。 このグループ内のすべてのルートにログインできるユーザーのみがアクセスできるようにするにはどうすればよいですか。私はauthAdminと呼ばれる別のミドルウェアを作成しようとしましたが、Webミドルウェアの代わりにそれを使用しようとしました。その場合、私はログインすることさえできません。

+0

あなたは2つのセッション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

関連する問題