2016-04-16 34 views
3

私は新しいLaravel 5.2インストールを作成しました。私はデフォルトのLaravel認証をインストールするために次のコマンドを実行しました。Laravel 5.2ログインできません

php artisan make:auth 

登録フォームは機能しますが、ログインするとホームにリダイレクトされます。間違った資格情報を入力するとエラーは表示されません。

これは私のルートファイルです:

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

Route::get('/tutors', '[email protected]'); 
Route::get('/tutors/myrequest', '[email protected]'); 
Route::get('/tutors/{id}', '[email protected]')->where(['id' => '[0-9]+']); 
Route::get('/tutors/{GUID}', '[email protected]')->where(['id' => '[A-Za-z]+[0-9]+']); 


/********************Authentication routes**********************************/ 
Route::group(['middleware' => ['web']], function() { 
    Route::auth(); 
}); 

これはAuthControllerからのコードです:

class AuthController extends Controller 
{ 
use AuthenticatesAndRegistersUsers, ThrottlesLogins; 


protected $redirectTo = '/'; 

public function __construct() 
{ 
    $this->middleware($this->guestMiddleware(), ['except' => 'logout']); 
} 

/** 
* Get a validator for an incoming registration request. 
* 
* @param array $data 
* @return \Illuminate\Contracts\Validation\Validator 
*/ 
protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'firstname' => 'required|max:255', 
     'lastname' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|confirmed|min:6', 
    ]); 
} 

/** 
* Create a new user instance after a valid registration. 
* 
* @param array $data 
* @return User 
*/ 
protected function create(array $data) 
{ 
    return User::create([ 
     'firstname' => $data['firstname'], 
     'lastname' => $data['lastname'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 
} 
} 

これはホームメソッドが含まれていBaseControllerです。

<?php namespace App\Http\Controllers; 
use App\Services\InterfaceService; 
use App\Repositories\TutorRepository; 
use App\Http\Requests; 
use Illuminate\Http\Request; 

class BaseController extends Controller { 

    protected $TutorRepository; 


    protected $InterfaceService; 
    public function __construct(InterfaceService $InterfaceService, TutorRepository $TutorRepository) 
    { 
     //$this->middleware('guest'); 
     $this->InterfaceService = $InterfaceService; 
     $this->TutorRepository = $TutorRepository; 
    } 

    public function index() 
    { 
     $tutors = $this->TutorRepository->all(); 
     $page_info = \Config::get('constants.App.Pages.home'); 
     $this->InterfaceService->SetPageInfo($page_info); 
     return view('home', ['TopTutors'=>$tutors]); 
    } 

} ?> 

これはログインビューのコードです。

<form role="form" method="POST" action="{{ url('/login') }}" id="login_form"> 
    {!! csrf_field() !!} 
    <div class="mj_login_form"> 
     <div class="form-group"> 
      <input type="text" placeholder="Email" id="email" name="email" class="form-control" value="{{ old('email') }}"> 
      @if ($errors->has('email')) 
       <span class="help-block"><strong>{{ $errors->first('email') }}</strong></span> 
      @endif 
     </div> 
     <div class="form-group"> 
      <input type="password" placeholder="Your Password" id="password" class="form-control" name="password"> 
      @if ($errors->has('password')) 
       <span class="help-block"><strong>{{ $errors->first('password') }}</strong></span> 
      @endif 
     </div> 
     <div class="row"> 
      <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 mj_toppadder20"> 
       <div class="form-group pull-left"> 
        <div class="mj_checkbox"> 
         <input type="checkbox" value="1" id="check2" name="remember"> 
         <label for="check2"></label> 
        </div> 
        <span> remember me</span> 
       </div> 
      </div> 
      <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 mj_toppadder20"> 
       <div class="form-group pull-right"> 
        <span><a href="{{ url('/password/reset') }}">forget password ?</a></span> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="mj_pricing_footer"> 
     <a href="#" onclick="$('#login_form').submit()">login Now</a> 
    </div> 
</form> 
+0

してくださいまた、ログインビューファイルが含まれています。 – Bogdan

+0

Authマルウェアを追加することになっていると思いますが、ルートを設定する方法がわかりません。私の試みは、ログインページに無限ループを引き起こしました。 \ App \ Http \ Middleware \ Authenticate :: classをKernel.php $ middlewareGroupsに追加してみましたが、それもうまくいきませんでした。 – LogicDev

+2

v5.2.27以降、 'app/Http/routes.php'のすべてのルートは既に' web'ミドルウェアグループに含まれています。 'Route :: auth()'を囲むルートグループを削除してみてください。 – patricus

答えて

1
あなた '/'ルートが webミドルウェアグループの下ではなく、あなたがこれはそのルートにアクセスするときことを意味

認証されるようにしたいルートのauthミドルウェアを使用していないので、たまたま

、セッション使用できず、authミドルウェアは起動しないため、認証は機能しません。

あなたはwebミドルウェアグループの下に、あなたは認証がauthミドルウェアを使用したいのルートでセッションを使用する場合、使用するすべてのルートを配置しよう:Laravelバージョンの

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

    /* these routes use 'auth' middleware, so only an authenticated user will access*/ 
    Route::group(['middleware' => 'auth' ], function() { 
     Route::get('/', '[email protected]'); 
    }); 

    Route::auth(); 
}); 

注意:

あなたはLaravelのバージョン> = 5.2.27を使用している場合は、で見ることができるようにするミドルウェアwebroutes.phpで定義されたすべてのルートにデフォルトで使用されていることに注意してください:あなたはwebミドルウェア・グループを使用するためにあなたの文を削除することができますが、あなたが唯一の認証されたルートのauthミドルウェアを使用する必要がありますその場合は

protected function mapWebRoutes(Router $router) 
{ 
    $router->group([ 
     'namespace' => $this->namespace, 'middleware' => 'web' 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
    }); 
} 

関連する問題