2016-10-03 34 views
3

私はpuzzle.whenを見つけることができません。ページをロードすると、chromeは言う:localhostページが機能していない、localhostがあなたを何度もリダイレクトした。私はそれがループを作成していると思います。私は得ることができない何か間違ったことをしているかもしれません。ここで私のコードに行きます。Laravelリダイレクトループ

//route 
Route::get('admin/login', 'Auth\[email protected]'); 
    Route::post('admin/login', 'Auth\[email protected]'); 
    Route::get('admin/logout', 'Auth\[email protected]'); 

    Route::group(['middleware' => 'auth'], function() { 
     Route::Auth(); 
     Route::get('/admin', 'admin\[email protected]'); 
    }); 


    Route::get('/', 'guest\[email protected]');//access all 

AuthController

<?php 

namespace App\Http\Controllers\Auth; 

use App\Models\Admin; 
use App\User; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 
use Illuminate\Http\Request; 
use Illuminate\Contracts\Auth\Guard; 
use Illuminate\Contracts\Auth\Registrar; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\File; 
use Illuminate\Support\Facades\Storage; 
use Illuminate\Http\Response; 

class AuthController extends Controller 
{ 
    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 
    protected $redirectTo = '/admin'; 

    public function __construct() { 

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

    protected function postLogin(Request $request){ 
     $email = $request['email']; 
     $pass = $request['password'];//Hash::make(Input::get('password')); 
     $user = Admin::where(['email' => $email])->first(); 
     if($user && $user->password == $pass) { 
      Auth::login($user); 
      dd(Auth::user()->toArray()); 
      return redirect()->intended('/admin'); 
     } 
     else { 
      $error = "Invalid username or password"; 
      return view("admin/login")->with("error", $error); 
     } 
    } 
    protected function getLogout() { 
     Auth::logout(); 
     return redirect()->intended('admin/login'); 
    } 
} 

モデル

<?php 
namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Contracts\Auth\Authenticatable; 


class Admin extends Model implements Authenticatable 
{ 

    use \Illuminate\Auth\Authenticatable; 
    protected $table = 'admins'; 
    public $timestamps = false; 
    public $remember_token = null; 

} 

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('admin/login'); 
      } 
     } 
     return $next($request); 
    } 
} 

設定/ auth.php

//---------------before------------------- 
    'providers' => [ 
     'users' => [ 
      'driver' => 'eloquent', 
      'model' => App\User::class, 
     ], 
//----------------after editing-------------------------- 
'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\Models\Admin::class, 
    ], 
+1

あなたのシステムは管理者だけをユーザーとして扱っていますか?そうでない場合は、管理者でない場合はリダイレクトするカスタムミドルウェアを作成する必要があります。 –

+0

3種類以上のユーザーがどのようにカスタムミドルウェアを作成するか@HariHarker –

+0

この質問の回答に記載されている手順に従います - http://stackoverflow.com/questions/34614753/can-anyone-explain-laravel-5-2-複数のauth-with-example –

答えて

2

あなたの認証ルートは、認証ミドルウェアを適用すべきではありません。したがって:

Route::Auth();  

Route::group(['middleware' => 'auth'], function() { 
    Route::get('/admin', 'admin\[email protected]'); 
}); 
関連する問題