2016-10-03 3 views
3

puzzle.when이 페이지를로드 할 때 chrome이 말한 것을 찾을 수 없습니다. localhost 페이지가 작동하지 않고 localhost 페이지가 너무 많이 리디렉션되었습니다. 루프를 만드는 것 같아요. 나는 내가 얻을 수없는 잘못된 일을하고 있을지 모릅니다. 여기 내 코드가 간다.Laravel redirection loop

//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- 다중 인증 - 예를 들어 –

답변

2

인증 경로는 인증 미들웨어를 적용해서는 안됩니다. 따라서 :

Route::Auth();  

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