2016-06-15 1 views
0

최근에 나는 laravel 프레임 워크를 시작하고 난 여부 home 기능 검사에서 HomeControllerLarvavel : 로그인 사용자 정의 미들웨어를 사용하여

public function login(Request $request) 
    { 
     $matches=['email'=>$request->email]; 
     $users =User::where($matches)->first(); 
     if($users == FALSE) 
     { 
      $request->session()->flash(
      'errors', 
      'Invalid Email'); 
      return redirect('/');  
     } 
     else if($users->account_status==0) 
     { 
      $request->session()->flash(
      'errors', 
      'Account is blocked please contact admin'); 
      return redirect('/'); 
     } 
     else if (!Hash::check($request->password,$users->user_password)) 
     { 
       $request->session()->flash('errors', 'Invalid Password'); 
       return redirect('/');  
     } 
     else 
     { 
       //login success set the session values 
       $request->session()->put('user',$users); 
       //redirect to home 
       return redirect('home'); 

     } 
    } 

구식 방법

Route::post('login',['as'=>'validatelogin','uses'=>'[email protected]']); 
Route::get('home/{page?}/{id?}','[email protected]'); 

과에서의 로그인 기능을 구현하고 로그인 페이지로 리디렉션되지 않으면 사용자 세션이 존재하고 그렇지 않으면 사용자 역할을 기반으로보기를로드합니다. 내가 미들웨어를 사용하여 위의 코드를 다시 작성할 수있는 방법

public function home(Request $request,$page='admin-home',$id=null) 
    { 
     if(!$request->session()->has('user')) 
     { 
      $request->session()->flash('errors', 'Session is expired'); 
      return redirect('/'); 
     } 
     //load the views based on roles 

    } 

, 난 많은 사례를 발견했지만, 난 강력하게 당신이 Laravel 로그인을 사용하는 것이 좋습니다 적절한 솔루션

+0

Laravel에 이미이 기능이 있으므로 인증 미들웨어의 코드를 살펴보십시오. 검토 할 수있는 좋은 곳입니다. – Devon

+0

나는 그것을 이미 알고 있지만 그것을 이해할 수는 없다. –

+0

아마 당신은 당신이 시도한 것과 앞으로 좀 더 구체적으로하기 위해 노력하지 않는 것으로 당신의 질문을 다시 써야 할 것이다. – Devon

답변

1

첫째을 얻을 수 없습니다. 당신은 당신이 그를 로그인하지 않는 세션에서 사용자를 넣으면 현재. Laravel 자동으로 올바른 자격 증명을 확인하는

당신은 Auth::attempt(['email' => $email, 'password' => $password])을 사용할 수있는 등 사용자의 로그인, 로그 아웃, 경비를 관리 할 인증 외관을 사용합니다 및 login (이 메서드는 성공하면 true를 반환합니다). 그리고 나서 Auth::check()을 사용하여 사용자가 로그인했는지 확인하고 auth midleware를 사용하여 경로 및 컨트 렉터를 보호 할 수 있으므로 사용자가 로그인했는지 확인할 필요가 없습니다.