【问题标题】:Laravel Cartalyst Sentinel - Adding a username column to users table (What is the right way)Laravel Cartalyst Sentinel - 向用户表添加用户名列(正确的方法是什么)
【发布时间】:2014-10-01 02:59:31
【问题描述】:

我已经引入了 cartalyst/sentinel,并且我已经运行了生成表所需的迁移

php artisan migrate --package=cartalyst/sentinel

我注意到这些是用户表中可用的列

  1. 身份证
  2. 电子邮件
  3. 密码
  4. 权限
  5. last_login
  6. 名字
  7. 姓氏
  8. created_at
  9. updated_at

我想在电子邮件后添加用户名。所以我创建了一个迁移文件。

//add a column username after email in the users table
$table->string('username')->after('email')->unique();

现在当我使用 Sentinel::register 时

$credentials = Input::all();
$user = Sentinel::register($credentials);

用户名未保存在表中。所以我设法通过编辑 vendor/cartalyst/sentinel/src/Users/EloquentUser.php

来填充它
protected $fillable = [
    'email',
    'username', /* i added this */
    'password',
    'last_name',
    'first_name',
    'permissions',
];

现在可以了,用户名被存储在表中。但我想知道我所做的是否正确?我们是否应该不触摸包文件夹中的文件。我们如何解决这个问题?

【问题讨论】:

    标签: php laravel acl cartalyst-sentinel


    【解决方案1】:

    几乎。您必须创建自己的 User 类,扩展 vendor/cartalyst/sentinel/src/Users/EloquentUser.php

    use Cartalyst\Sentinel\Users\EloquentUser as CartalystUser;
    
    class User extends CartalystUser {
    
        protected $fillable = [
            'email',
            'username', /* i added this */
            'password',
            'last_name',
            'first_name',
            'permissions',
        ];
    
    }
    

    发布 Sentinel 的配置:

    php artisan config:publish cartalyst/sentinel
    

    并在配置文件中,将用户模型设置为您自己的:

    'users' => [
    
        'model' => 'Your\Namespace\User',
    
    ],
    

    【讨论】:

    • 身份验证是否与 Sentinel::authenticate(['username'=>'user','password'=>'password']) 一起使用?我知道默认情况下它需要一个带有“电子邮件”和“密码”的数组。
    猜你喜欢
    • 2016-06-28
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多