2013-05-20 3 views
4

Проблемы с аутентификацией и регистрацией пользователей в Ларавеле 4.Аутентификация пользователя в Ларавеле 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; 
    } 

} 

часть информации я нашел странным. Если вместо перенаправления на '/' I return View::make('home') он сохраняет объект просто отлично, однако, когда я покидаю эту страницу, он снова исчезает.

EDIT:

Поскольку это должно быть что-то делать с сеансами я отправил свой файл 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', 

); 

До сих пор я пробовал «cookie» и «native» драйверы сеансов, которым не повезло.

+0

Предоставьте общий доступ к коду, который вы используете для доступа к вашему пользователю. –

+0

Вы правильно настроили свои сеансы? – DaGardner

+0

Использование собственного драйвера сеанса –

ответ

6

Простые исправления. В моей модели я определил

protected $key = 'userid'

Что мне нужно сделать, это изменить его

protected $primaryKey = 'userid';

Надеюсь, это поможет кому-то вдоль линии.

Смежные вопросы