2013-05-20 3 views
4

Laravel에서 사용자를 인증하고 로그인하는 데 문제가 있습니다. 4Laravel 4의 사용자 인증

내 로그인 양식이이 경로로 연결됩니다.

Route::post('login', function() { 
    // get POST data 
    $userdata = array(
     'username'  => Input::get('username'), 
     'password'  => Input::get('password') 
    ); 

    if (Auth::attempt($userdata)) 
    { 
     // we are now logged in, go to home 
     return Redirect::to('/'); 
    } 
    else 
    { 
     // auth failure! lets go back to the login 
     return Redirect::to('login') 
      ->with('login_errors', true); 
     // pass any error notification you want 
     // i like to do it this way :) 
    } 
}); 

이 시점에서 모든 것이 정상적으로 진행되는 것 같습니다. 그러나 홈 페이지로 리다이렉트되었지만 아무 사용자 오브젝트도 저장되어 있지 않습니다. 모든 사용자 함수에 액세스하려고하면 "비 객체의 속성을 가져 오려고합니다"오류가 발생합니다.

여기 내 사용자 모델

<?php 

use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableInterface; 

class User extends Eloquent implements UserInterface, RemindableInterface { 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'tblusers'; 
    /** 
    * The database key used by the model. 
    * 
    * @var string 
    */ 
    protected $key = 'userid'; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = array('password'); 

    /** 
    * Get the unique identifier for the user. 
    * 
    * @return mixed 
    */ 
    public function getAuthIdentifier() 
    { 
     return $this->getKey(); 
    } 

    /** 
    * Get the password for the user. 
    * 
    * @return string 
    */ 
    public function getAuthPassword() 
    { 
     return $this->password; 
    } 

    /** 
    * Get the e-mail address where password reminders are sent. 
    * 
    * @return string 
    */ 
    public function getReminderEmail() 
    { 
     return $this->email; 
    } 

    public function roles() 
    { 
     return $this->belongsToMany('Role'); 
    } 

    public function permissions() 
    { 
     return $this->hasMany('Permission'); 
    } 

    public function hasRole($key) 
    { 
     foreach($this->roles as $role){ 
      if($role->name === $key) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

} 

내가 이상한 찾아 정보의 조각이다. '/'로 리다이렉트하는 대신에, 오브젝트를 잘 저장하지만, 그 페이지를 떠날 때 다시 사라집니다.

편집

이 이후

내가 참조를 위해 내 session.php 파일을 게시 한 세션을 함께 할 수있는 뭔가가 있어야합니다.

<?php 

return array(

    /* 
    |-------------------------------------------------------------------------- 
    | Default Session Driver 
    |-------------------------------------------------------------------------- 
    | 
    | This option controls the default session "driver" that will be used on 
    | requests. By default, we will use the lightweight native driver but 
    | you may specify any of the other wonderful drivers provided here. 
    | 
    | Supported: "native", "cookie", "database", "apc", 
    |   "memcached", "redis", "array" 
    | 
    */ 

    'driver' => 'native', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Lifetime 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may specify the number of minutes that you wish the session 
    | to be allowed to remain idle for it is expired. If you want them 
    | to immediately expire when the browser closes, set it to zero. 
    | 
    */ 

    'lifetime' => 5, 

    /* 
    |-------------------------------------------------------------------------- 
    | Session File Location 
    |-------------------------------------------------------------------------- 
    | 
    | When using the native session driver, we need a location where session 
    | files may be stored. A default has been set for you but a different 
    | location may be specified. This is only needed for file sessions. 
    | 
    */ 

    'files' => storage_path().'/sessions', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Database Connection 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "database" session driver, you may specify the database 
    | connection that should be used to manage your sessions. This should 
    | correspond to a connection in your "database" configuration file. 
    | 
    */ 

    'connection' => null, 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Database Table 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "database" session driver, you may specify the table we 
    | should use to manage the sessions. Of course, a sensible default is 
    | provided for you; however, you are free to change this as needed. 
    | 
    */ 

    'table' => 'sessions', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Sweeping Lottery 
    |-------------------------------------------------------------------------- 
    | 
    | Some session drivers must manually sweep their storage location to get 
    | rid of old sessions from storage. Here are the chances that it will 
    | happen on a given request. By default, the odds are 2 out of 100. 
    | 
    */ 

    'lottery' => array(2, 100), 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Cookie Name 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may change the name of the cookie used to identify a session 
    | instance by ID. The name specified here will get used every time a 
    | new session cookie is created by the framework for every driver. 
    | 
    */ 

    'cookie' => 'laravel_session', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Cookie Path 
    |-------------------------------------------------------------------------- 
    | 
    | The session cookie path determines the path for which the cookie will 
    | be regarded as available. Typically, this will be the root path of 
    | your application but you are free to change this when necessary. 
    | 
    */ 

    'path' => '/', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Cookie Domain 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may change the domain of the cookie used to identify a session 
    | in your application. This will determine which domains the cookie is 
    | available to in your application. A sensible default has been set. 
    | 
    */ 

    'domain' => null, 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Payload Cookie Name 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "cookie" session driver, you may configure the name of 
    | the cookie used as the session "payload". This cookie actually has 
    | the encrypted session data stored within it for the application. 
    | 
    */ 

    'payload' => 'laravel_payload', 

); 

지금까지 '쿠키'및 '네이티브'세션 드라이버를 사용해 보았습니다.

+0

사용자에게 액세스하는 데 사용하는 코드를 공유하십시오. –

+0

세션을 올바르게 설정 했습니까? – DaGardner

+0

네이티브 세션 드라이버 사용 –

답변

6

간단한 수정. 내 모델에서 내가

protected $key = 'userid'

를 정의했던 것은 내가 무엇을 필요로하는 것은 희망이이 선을 따라 사람을 도움이

protected $primaryKey = 'userid';

로 변경했다.