2014-10-06 17 views
0

도움이 필요합니까? 인증 사용자 프로필에 내 작업이 올바른지 누군가가 알려 줄 수 있습니까?Laravel 인증 및 필터

파일 routes.php (I이 예를 들어 두 그룹을 사용)

<?php 
    //home 
    Route::get('/',function() 
    { 
     return Redirect::to('login'); 
    }); 

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

    //login for form 
    Route::post('login','[email protected]'); 

    //routes for admin 
    Route::group(array('before' => 'adminFilter'),function() 
    { 
     Route::get('/adminHomePage',function() 
     { 
      return View::make('adminHome'); 
     }); 
    }); 

    //route for common user 
    Route::group(array('before' => 'commonUserFilter'),function() 
    { 
     Route::get('/commonUserPage',function() 
     { 
      return View::make('commonPage'); 
     }); 
    }); 

    Route::get('logout','[email protected]'); 
?> 

파일 filters.php

<?php 
    Route::filter('adminFilter', function($route, $request) 
    { 
     if (Auth::user()->profile != 1) 
     { 
      return Redirect::to('/logout'); 
     } 
    }); 

    Route::filter('commonUserFilter',function($route, $request) 
    { 
     if (Auth::user()->profile != 2) 
     { 
      return Redirect::to('/logout'); 
     } 
    }); 
?> 

파일 AuthController.php

<?php 
    public function showLogin() 
    { 
     return View::make('login'); 
    } 

    public function postLogin() 
    { 
     //Get user data from login form 
     $user = array(
     'user' => Input::get('username'), 
     'password' => Input::get('password')); 

     if(Auth::attempt($user,true)) 
     {   
      switch (Auth::user()->profile) 
      { 
       case 1: 
        //home admin 
        return Redirect::to('/adminHomePage'); 
        break; 

       case 2: 
        //home common user 
        return Redirect::to('/commonUserPage'); 
        break; 
      } 
     } 
     else 
     { 
      return Redirect::to('login') 
      ->with('mensaje_error','Incorrect data.') 
      ->withInput(); 
     } 
    } 

    public function logOut() 
    { 
     Auth::logout(); 
     return Redirect::to('/login') 
     ->with('mensaje_error', 'Your session was closed.');   
    } 
?> 
: 나는 다음 파일이
+1

왜 테스트 해보고 어떻게됩니까? 내게 맞는 모양 – Laurence

+0

페이지를 볼 수 없을 때 사용자를 집으로 리디렉션하지 않고 사용자에게 리디렉션합니다. 당연히, 그것은 당신이 만들고있는 것에 달려 있습니다. – Jerodev

+0

답장을 보내 주셔서 감사합니다. 예제를 실행하면 정상적으로 작동합니다. 의견과 제안을 받고 프로필 관리를 할 수있는 방법을 보여주기 위해 게시했습니다. – Turcko007

답변

0

하나의 보안 문제 (Laravel 4 +를 사용하는 경우)

routes.php에서

는 님의

Route::post('name', [email protected]); 

변경을 : 양식에서

Route::group(array('before' => 'csrf'), function() { 

    Route::post('name', [email protected]); 

}); 

, 당신은이를 추가 할 수 있습니다 {{ Form::token() }}.


하나의 작은 팁 :이 당신이 here을 찾을 수 있습니다 작동 방법 .. 모든 경로에 고유 한 이름을 지정하는 것을 선호합니다.

+0

WQuaniran 감사합니다. 나는 이것을 사용할 것이다. – Turcko007