2014-11-05 2 views
3
$this->beforeFilter(function() 
     { 
      Config::set('auth.model', 'User'); 
      if ((Auth::guest())) { 
      //dd(Auth::guest()); 
      $msg3 = "Please Login First"; 
      // dd("ok"); 
      return Redirect::to(Request::root().'/auth')->with("error_message", $msg3); 

      } 

     }); 

Я использую функцию Auth :: гость() для остановки несанкционированного доступа, но когда я попал URL несанкционированного доступа работает нормально, но не может ... Войти без этой части кода входа в систему с помощью Auth :: попытка () отлично работает ... что может быть проблемой ??Laravel Authentication

Редактировать // AuthController для входа в систему

<?php 

// uncomment this to use namespaced controller 
//namespace Modules\admin\Controllers; 

class AuthController extends \BaseController 
{ 
    public function __construct() 
    { 
     $this->beforeFilter(function() 
     { 
      Config::set('auth.model', 'User'); 
     }); 
    } 



    public function getIndex() 
    { 

     return \View::make("login"); 
    } 


    public function postLogin() 
    { 
     $msg7 = "Invalid email address or password"; 
     // $results['userData'] = user::get(); 
     // dd($results); 
     //$password=Input::get('password'); 
     //$password=Hash::make('secret'); 

     $userData = array(
     'email' => Input::get('email'), 
     'password'=> Input::get('password') 
     ); 

     $email=Input::get('email'); 
     // $password=Input::get('password'); 
    // dd($password); 
     //dd($userData); 
     $rules = array(
     'email' => 'required|email', 
     'password' => 'required|min:5' 
     ); 



     $remember=Input::get('remember'); 

     $remember_me=false; 
     if (!empty($remember)) { 
      $remember_me=true; 
     } 

     $validator = Validator::make(Input::get(), $rules); 
     if($validator->fails()){ 

      // redirect to the login page with validation errors 
      return Redirect::to(Request::root().'/auth')->withErrors($validator)->withInput(); 


     } 


     else{ 

      //dd(Auth::attempt($userData)); 
      // check authentication 
      if(Auth::attempt($userData,$remember_me)){ 
       // dd(Auth::attempt($userData));    // redirect to the dashboard page 
       //dd($userData); 

       return Redirect::to(Request::root().'/home'); 

      }else{ 
       //dd($userData); 
       //DB::table('user')->insert($userData);    
       //dd("test"); 
       // redirect to the login page with error message 
       return Redirect::to(Request::root().'/auth')->with("error_message", $msg7); 
      } 

     } 
    } 


// logout function 
    public function getLogout() 
    { 
     // delete all data from sesstion 
     Auth::logout(); 
     Session::flush(); 
     // redirect to login page 
     return Redirect::to(Request::root().'/auth'); 
    } 

} 

// DashboardController где несанкционированный доступ заблокирован

<?php 

class DashboardController extends BaseController{ 

    public function __construct() 
    { 
     $this->beforeFilter(function() 
     { 
      Config::set('auth.model', 'User'); 


      if ((Auth::guest())) { 
      //dd(Auth::guest()); 
      $msg3 = "Please Login First"; 
      // dd("ok"); 
      return Redirect::to(Request::root().'/auth')->with("error_message", $msg3); 

      } 

     }); 

    } 


    public function getIndex() 
    { 
      //dd(Auth::check()); 

     return View::make('home'); 
    } 

} 
+0

Что именно не работает? Если вы заполняете действительные данные для входа, куда вы идете? Вы вошли в систему? –

+1

да !!! если я прокомментирую часть конструктора моего DashboardController, он войдет в систему и вернет меня на родину ... означает, что логин работает нормально ... но когда я пытаюсь остановить неавторизованный доступ .. он не перенаправляет – Godzilla

+0

Я не вижу никаких проблема здесь, может быть, кто-то еще будет –

ответ

1

Проблема заключается в том, что вы должны исключить свое действие, когда вы посылаете форму входа данные. Если в вашем контроллере у вас есть метод postLogin для обработки данных POST из формы входа в систему, вы должны использовать:

$this->beforeFilter(function() { 
      // here goes code of your filter 
    }, array('except' => 'postLogin')); 

Reference

+0

он все еще не работает. Нужно ли мне что-то менять в конфигурационных файлах – Godzilla

+0

@ user3541158 Вы должны показать свой код класса, а затем –

+0

Я обновил вопрос ... пожалуйста, посмотрите .. – Godzilla