php – Laravel 4中的用户身份验证
发布时间:2020-12-14 19:43:24 所属栏目:大数据 来源:网络整理
导读:在Laravel 4中验证和登录用户时遇到问题. 我的登录表单指向此路线. Route::post('login',function() { // get POST data $userdata = array( 'username' = Input::get('username'),'password' = Input::get('password') ); if ( Auth::attempt($userdata) )
在Laravel 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 IlluminateAuthUserInterface; use IlluminateAuthRemindersRemindableInterface; 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; } } 一条信息我觉得很奇怪.如果,而不是重定向到’/’我返回View :: make(‘home’)它会很好地存储对象,但是当我离开那个页面时它会再次消失. 编辑: 由于这必须与会话有关,我已经发布了我的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’和’本地’会话驱动程序,每个都没有运气. 解决方法
简单修复.在我的模型中,我定义了
protected $key =’userid’ 我需要做的是改变它 protected $primaryKey =’userid’; 希望这有助于沿线的人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |