2017-05-12 20 views
0

私はlaravelのミドルウェアに問題があります。私は登録ユーザーだけがサインインできるミドルウェアを作りたがっています。そして 'はい'私は 'php artisan makeでそれを得ることができることを知っています:私は自分のミドルウェアを作りたがっていました。私はそれが 本当に悪いです何ダッシュボードに私をリダイレクトしてもLaravelのAuthミドルウェア5.4

に署名するために働く「/ダッシュボード」のURLを入力すると は、だから私は、ミドルウェアを書いた:

<?php 
namespace App\Http\Middleware; 

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

class AuthUser 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if(Auth::guard()->guest()) { 
      return redirect()->route('home'); 
     } 
     return $next($request); 
    } 
} 

は、その後、カーネル内のルートにこれを追加しました。 PHP:ここ

'auth_user'=>\App\Http\Middleware\AuthUser::class   

は私のルートです:

Route::get('/', function() { 
    return view('welcome'); 
})->name('home'); 

Route::post('/signup',[ 
    'uses'=>'[email protected]', 
    'as'=>'signup' 
]); 
Route::post('/signin',[ 
    'uses' =>'[email protected]', 
    'as' =>'signin' 
]); 

Route::group(['middleware'=>['auth_user']],function(){ 
    Route::get('/dashboard',[ 
     'uses'  => '[email protected]', 
     'as'  => 'dashboard', 
    ]); 
}); 

そして、私のUserControllerで:ルート/ web.phpでルートを定義するときは、「ウェブ」のミドルウェアを用意する必要はありません

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\User; 
use Illuminate\Support\Facades\Auth; 

class UserController extends Controller 
{ 
    public function getDashboard() 
    { 
     return view('dashboard'); 
    } 
    public function postSignUp(Request $request) 
    { 
     $this->validate($request,[ 
      'email'  => 'email|unique:users', 
      'first_name'=> 'required|max:128', 
      'password' => 'required|min:6' 
     ]); 
     $email=$request['email']; 
     $password=bcrypt($request['password']); 
     $first_name=$request['first_name']; 
     $surname=($request['surname']); 
     $user=new User(); 

     $user->email=$email; 
     $user->password=$password; 
     $user->first_name=$first_name; 
     $user->surname=$surname; 

     $user->save(); 
     Auth::login($user); 
     return redirect()->route('dashboard'); 
    } 
    public function postSignIn(Request $request) 
    { 
     $this->validate($request,[ 
      'email'  => 'required|email', 
      'password' => 'required|min:6' 
     ]); 

if(Auth::attempt(['email' => $request['email'], 'password'  
      =>$request['password']]))  
     { 

      return redirect()->route('dashboard'); 
     } 
      return redirect()->back(); 
    } 
} 
+0

してRoutingServiceProviderを通じてルーティング/ web.phpルートに適用されています[ 'web'は次のミドルウェアを追加するべきではありません](http://stackoverflow.com/questions/36784253/ laravel-5-2-validation-error-not-in-blade)を 'web.php'のルートに追加します。 –

+0

私はルートから削除してもまだ動作しません – OrestKhomitskyi

答えて

1

それはあなたが5.4でデフォルト

Route::group(['middleware'=>['auth_user']],function(){ 
    Route::get('/dashboard',[ 
     'uses'  => '[email protected]', 
     'as'  => 'dashboard', 
    ]); 
}); 
+0

私は/ダッシュボードを入力するとバックページにリダイレクトされますが、サインインすればダッシュボードにリダイレクトされません – OrestKhomitskyi

+0

多分問題はミドルウェアクラスです – OrestKhomitskyi

+0

新しい経路ファイルを使用していますか? – fppz

関連する問題