Laravel - 身份验证特征错误异常

时间:2017-01-03 14:19:50

标签: php laravel authentication

我正在Laravel应用程序中进行ajax登录。它在我的本地环境中运行良好,但我将网站移至Production,登录后我看到了这个异常

  

User.php第29行中的ErrorException:Illuminate \ Foundation \ Auth \ User   和Illuminate \ Auth \ Authenticatable定义相同的属性   App \ User组成中的($ rememberTokenName)。这可能是   不兼容,提高可维护性考虑使用访问器   相反的方法。班级由

组成

我的用户模型为

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, \Illuminate\Auth\Authenticatable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'first_name', 'last_name', 'hospital_id', 'census_id', 'employee_id'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

1 个答案:

答案 0 :(得分:0)

Illuminate\Foundation\Auth\User已使用use Illuminate\Contracts\Auth\Authenticatable,因此您基本上应用了两次导致该错误的特征。

以下是Illuminate \ Foundation \ Auth \ User.php

的代码
<?php

namespace Illuminate\Foundation\Auth;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;
}

另外一个侧面建议可能会将您的别名位as Authenticable重命名为AuthUser / BaseUser更明确的内容,因此很明显您正在扩展用户类。