📜  laravel 8 登录注销 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:44.445000             🧑  作者: Mango

Laravel 8 登录注销 - PHP

在 Laravel 8 中,处理用户认证比以往更加简单和灵活。本文将介绍如何使用默认的 Laravel 8 验证路由和控制器来实现用户登录和注销。

先决条件
  • 安装了 Laravel 8 的基本知识
  • Laravel UI 的安装和使用,可以通过以下命令来安装:
composer require laravel/ui
路由

Laravel 8 中默认的 authentication 路由已经注册在 routes/web.php 文件中,这些路由包括:

Route::get('/login', [AuthenticatedSessionController::class, 'create'])
                ->middleware('guest')
                ->name('login');

Route::post('/login', [AuthenticatedSessionController::class, 'store'])
                ->middleware('guest');

Route::get('/logout', [AuthenticatedSessionController::class, 'destroy'])
                ->middleware('auth')
                ->name('logout');

登录路由为 /login,注销路由为 /logout,默认的控制器是 AuthenticatedSessionController,同时使用中间件来验证用户是否已经登录。

控制器

AuthenticatedSessionController 控制器负责处理用户登录和注销的相关逻辑。默认情况下,这个控制器是由 Laravel 自动创建并注册。

如果你需要自定义 AuthenticatedSessionController 中的方法,可以使用 php artisan make:controller AuthenticatedSessionController --invokable 命令创建一个可调用的控制器,然后在 config/auth.php 文件中指定控制器的名称:

'authenticate' => [
    'controller' => App\Http\Controllers\AuthenticatedSessionController::class,
    'method' => 'store',
],
'logout' => [
    'controller' => App\Http\Controllers\AuthenticatedSessionController::class,
    'method' => 'destroy',
],
视图

默认情况下,Laravel 8 会使用 resources/views/auth 目录下的视图文件处理登录和注册页面。这些视图是由 Laravel 自动创建的。

如果你需要自定义视图文件,可以使用 php artisan ui bootstrap --auth 命令将预先构建的视图文件复制到你的项目中,然后自定义这些视图文件。

示例

以下示例演示了如何使用默认的 Laravel 8 用户认证来实现用户登录和注销:

// 登录
public function login(Request $request)
{
    $request->validate([
        'email' => 'required|email',
        'password' => 'required',
    ]);

    if (Auth::attempt($request->only('email', 'password'), $request->only('remember'))) {
        return redirect()->intended(route('dashboard'));
    }

    return back()->withInput()->withErrors([
        'email' => 'The provided credentials do not match our records.',
    ]);
}

// 注销
public function logout(Request $request)
{
    Auth::logout();

    $request->session()->invalidate();

    $request->session()->regenerateToken();

    return redirect('/');
}
结论

Laravel 8 提供了强大的用户认证机制,开发者可以通过简单的配置和自定义来实现灵活的用户登录和注销。上述代码片段涵盖了基础操作,阅读本文之后,希望您已经具备了一定的 Laravel 8 用户认证实践能力。