📅  最后修改于: 2023-12-03 14:43:44.445000             🧑  作者: Mango
在 Laravel 8 中,处理用户认证比以往更加简单和灵活。本文将介绍如何使用默认的 Laravel 8 验证路由和控制器来实现用户登录和注销。
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 用户认证实践能力。