在Laravel中手动注册用户

Mat*_*lis 44 php laravel laravel-5 laravel-5.2

是否可以手动注册用户(与工匠?)而不是通过身份验证注册页面?

我只需要一些用户帐户,并想知道是否有办法创建这些帐户而无需设置注册控制器和视图.

Chr*_*ors 85

我想你想一次性这样做,所以不需要像创建Artisan命令那样花哨的东西.我建议只使用php artisan tinker(很棒的工具!)并为每个用户添加以下命令:

$user = new App\User();
$user->password = Hash::make('the-password-of-choice');
$user->email = 'the-email@example.com';
$user->name = 'My Name';
$user->save();
Run Code Online (Sandbox Code Playgroud)

  • 如果您的项目也需要名称,请在`save()`行之前使用`$ user-> name ='John Doe';`. (6认同)
  • 不,这不是工匠的命令.这是***使用***工匠命令. (3认同)
  • Laravel 8:`$user = new App\Models\User();` (3认同)

use*_*178 9

是的,最好的选择是创建一个播种机,这样您就可以随时重复使用它。

例如,这是我的UserTableSeeder:

class UserTableSeeder extends Seeder {

public function run() {

    if(env('APP_ENV') != 'production')
    {
        $password = Hash::make('secret');

        for ($i = 1; $i <= 10; $i++)
        {
            $users[] = [
                'email' => 'user'. $i .'@myapp.com',
                'password' => $password
            ];
        }

        User::insert($users);
    }
}
Run Code Online (Sandbox Code Playgroud)

创建此播种机后,您必须运行composer dumpautoload,然后在您的database/seeds/DatabaseSeeder.php添加以下内容:

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('UserTableSeeder');
     }
}
Run Code Online (Sandbox Code Playgroud)

现在你终于可以在php artisan db:seed --class=UserTableSeeder每次需要在表中插入用户时使用了。

  • 请注意,如果您使用这样的播种器(出于重复使用的目的),您很可能会使用此解决方案将您的密码以明文形式存储在 git 存储库中。请谨慎操作,并将您的密码抽象到环境变量中。 (2认同)

小智 7

这是一个古老的帖子,但是如果有人想在Laravel 5. *中使用命令行来做,这是一个简单的方法:

php artisan tinker
Run Code Online (Sandbox Code Playgroud)

然后输入(替换为您的数据):

DB::table('users')->insert(['name'=>'MyUsername','email'=>'thisis@myemail.com','password'=>Hash::make('123456')])
Run Code Online (Sandbox Code Playgroud)

  • 这是正确答案 (4认同)

Fra*_*ere 5

是的,您可以轻松编写数据库播种器并以此方式播种用户。


Nic*_*ood 5

您还可以创建一个可以从命令行调用的新控制台命令。如果您想按需创建新用户,这尤其有用。

此示例使用laravel fortify,但您也可以使用自己的用户注册逻辑。

首先创建一个新的控制台命令:

php artisan make:command CreateUserCommand
Run Code Online (Sandbox Code Playgroud)

然后添加实现:

php artisan make:command CreateUserCommand
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式执行命令:

php artisan user:create -u myusername -e mail@example.com
Run Code Online (Sandbox Code Playgroud)

出于安全原因,我建议始终通过用户输入询问密码,而不是作为参数。