📅  最后修改于: 2023-12-03 15:22:41.103000             🧑  作者: Mango
在Web应用程序中,创建新用户是一个非常重要的功能。在Laravel 8中,用户认证系统已经内置并集成到框架中。使用Laravel的内置身份验证系统,您可以轻松创建新用户。在这篇文章中,我们将探讨如何强化Laravel 8中的创建新用户功能。
在完成安装Laravel 8后,使用以下命令创建新应用程序:
composer create-project --prefer-dist laravel/laravel my-app
您还需要在MySQL中创建一个名为“my-app”的新数据库。
在配置环境变量中,将数据库名称、用户名和密码添加到 .env 文件中,并将应用程序的 URL 添加到 APP_URL,如下所示:
DB_DATABASE=my-app
DB_USERNAME=root
DB_PASSWORD=
APP_URL=http://localhost:8000
要启用Laravel 8的用户认证,使用以下命令运行默认的用户认证工具:
php artisan make:auth
这将自动创建用于注册、登陆、密码重置等的所有视图、控制器和路由。
在资源控制器中,可以将任何其他字段添加到默认的用户注册表单中。例如,您可能想要添加一个名为“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”字段只能包含字母和空格。
默认情况下,注册成功后将跳转到/home,您可以修改此默认值,以便在成功有注册后跳转到其他页面。例如,如果要在注册成功后将用户重定向到其个人资料页面,可以在RegisterController.php 中添加以下内容:
public function redirectTo(){
return '/profile'; //replace with the path you want to be redirected to after registration
}
我们添加了自定义字段,但这并没有防止任何人都可以进行注册。我们需要添加后端验证,以仅允许特定用户才能创建新用户。在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的角色和权限系统,以便您可以更准确地管理用户权限。