📜  laravel 身份验证设置 - PHP (1)

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

Laravel身份验证设置

Laravel身份验证提供了一个易于使用且灵活的身份验证系统,并且可以轻松地进行自定义。使用laravel身份验证系统可以轻松地验证用户身份,让你专注于自己的应用程序。

安装

要使用laravel身份验证系统需要先安装laravel框架,可以使用composer命令进行安装:

composer create-project --prefer-dist laravel/laravel project-name
配置数据库

在使用laravel身份验证系统之前,需要配置数据库。在.env文件中填写相应的数据库设置,如下:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
启用身份验证

要启用laravel身份验证系统,只需要在app/Http/Kernel.php中加入以下中间件信息:

protected $middlewareGroups = [
    'web' => [
        // ...
        \Illuminate\Auth\Middleware\Authenticate::class,
        // ...
    ],
    // ...
];
用户模型

Laravel默认使用Eloquent ORM作为数据模型,可以通过以下命令生成用户模型:

php artisan make:model User -m

用户模型需要继承Illuminate\Database\Eloquent\Model,如下所示:

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // ...
}
数据库迁移

Laravel提供了数据库迁移(migration)功能,可以方便地在不同的环境中管理数据库结构和数据。可以通过以下命令生成用户表的迁移文件:

php artisan make:migration create_users_table --create=users

生成的迁移文件默认在database/migrations目录中,需要填写相应的字段信息:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

然后运行迁移命令进行迁移:

php artisan migrate
路由和控制器

Laravel提供了路由(route)和控制器(controller)功能,可以实现URL和相应的处理逻辑。可以通过以下命令生成身份验证相关的路由和控制器:

php artisan make:auth

该命令生成了一系列身份验证相关的路由和控制器,包括注册、登录、密码重置等操作。可以通过php artisan route:list命令查看生成的路由信息。

界面视图

Laravel提供了基础的身份验证界面视图,位于resources/views/auth目录中。可以进行自定义修改,或者使用第三方的UI框架。

获取认证用户

在控制器中可以使用Auth门面获取当前认证的用户,例如:

use Illuminate\Support\Facades\Auth;

class UserController extends Controller
{
    public function profile()
    {
        $user = Auth::user();
        return view('profile', ['user' => $user]);
    }
}
统一验证

Laravel身份验证系统提供了AuthenticatesUsersRegistersUsersResetsPasswordsVerifiesEmails等trait,包含了登录、注册、密码重置和邮箱验证等操作的相关方法。可以通过以下方式进行自定义和覆盖:

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    use AuthenticatesUsers;

    public function authenticated(Request $request, $user)
    {
        // ...
    }
}
自定义验证器

Laravel身份验证系统提供了基础的验证规则,但是也可以进行自定义验证器的扩展。例如,以下是一个自定义的验证规则:

Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
    return $value == 'foo';
});

该验证规则可以用于验证foo字段的值是否为foo,例如:

$request->validate([
    'foo' => 'required|foo',
]);
总结

Laravel身份验证系统提供了非常方便的身份验证功能,可以自由定制和扩展,帮助我们构建安全可靠的应用程序。