📜  创建新用户强化操作 laravel 8 - PHP (1)

📅  最后修改于: 2023-12-03 15:22:41.103000             🧑  作者: Mango

创建新用户强化操作 Laravel 8 - PHP

在Web应用程序中,创建新用户是一个非常重要的功能。在Laravel 8中,用户认证系统已经内置并集成到框架中。使用Laravel的内置身份验证系统,您可以轻松创建新用户。在这篇文章中,我们将探讨如何强化Laravel 8中的创建新用户功能。

Step 1: 安装Laravel 8并创建应用程序

在完成安装Laravel 8后,使用以下命令创建新应用程序:

composer create-project --prefer-dist laravel/laravel my-app

您还需要在MySQL中创建一个名为“my-app”的新数据库。

Step 2: 配置环境

在配置环境变量中,将数据库名称、用户名和密码添加到 .env 文件中,并将应用程序的 URL 添加到 APP_URL,如下所示:

DB_DATABASE=my-app
DB_USERNAME=root
DB_PASSWORD=
APP_URL=http://localhost:8000
Step 3: 运行用户认证工具

要启用Laravel 8的用户认证,使用以下命令运行默认的用户认证工具:

php artisan make:auth

这将自动创建用于注册、登陆、密码重置等的所有视图、控制器和路由。

Step 4: 定制注册功能
4.1 自定义注册字段

在资源控制器中,可以将任何其他字段添加到默认的用户注册表单中。例如,您可能想要添加一个名为“country”的字段,以收集用户的国家信息。可以使用以下命令创建自定义注册控制器:

php artisan make:controller Auth\RegisterController

然后,在register() 方法中自定义字段,如下所示:

use App\Models\User;
use App\Rules\AlphaSpaces;

use Illuminate\Support\Facades\Validator;

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'country' => ['required', 'string', new AlphaSpaces],
    ]);
}

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'country' => $data['country'],
    ]);
}

请注意,我们使用了一个自定义验证规则AlphSpaces来确保“country”字段只能包含字母和空格。

4.2 在注册成功后跳转到其他页面

默认情况下,注册成功后将跳转到/home,您可以修改此默认值,以便在成功有注册后跳转到其他页面。例如,如果要在注册成功后将用户重定向到其个人资料页面,可以在RegisterController.php 中添加以下内容:

public function redirectTo(){
    return '/profile'; //replace with the path you want to be redirected to after registration
}
Step 5: 在后端添加权限验证

我们添加了自定义字段,但这并没有防止任何人都可以进行注册。我们需要添加后端验证,以仅允许特定用户才能创建新用户。在RegisterController.php中,添加以下内容:

use Illuminate\Support\Facades\Auth;

public function showRegistrationForm(){
    if (Auth::user()->can('create-users')) { //replace with your desired permission
        return view('auth.register');
    } else {
        return back()->withErrors('You do not have permission to create users.');
    }
}
结论

在这篇文章中,我们讨论了如何增强Laravel 8中的创建新用户功能。通过自定义字段、重定向到自定义页面和添加后端用户验证,您可以创建一个更安全和更具体的注册系统。下一步是使用Laravel的角色和权限系统,以便您可以更准确地管理用户权限。