什么是认证
认证(Authentication)指的是确认访问用户「是谁」的机制。 在 Web 应用中,通常是通过登录表单接收邮箱和密码,若匹配成功就把用户信息保存到 Session 中。 之后的请求就通过该 Session 识别用户。 Laravel 的认证功能由「守卫(Guard)」和「Provider(用户提供者)」两个概念组成。- 守卫:定义在每个请求中如何认证用户。默认使用
session守卫,通过 Session 与 Cookie 管理状态。 - Provider:定义如何从数据源中取出用户。默认使用 Eloquent。
认证的配置文件是
config/auth.php。默认设置就足以覆盖大多数 Web 应用。通过启动套件搭建认证
在 Laravel 中,只需在通过laravel new 创建应用时选择启动套件,就会自动构建登录、注册、密码重置等认证功能。这是最推荐的方式。
1
创建应用
使用 Laravel 安装器创建应用,过程中会有选择启动套件的提示。启动套件可以从 React、Vue、Livewire、Svelte 中选择。
请结合团队的技术栈来选。
2
安装前端依赖
3
准备数据库
确认 包含
.env 中的数据库配置后运行迁移。users 表的初始迁移会被应用。4
启动开发服务器
http://localhost:8000,导航栏会显示「Register」与「Log in」链接。
可以访问 /register 试着注册用户。可用的启动套件
React
采用 React 19、TypeScript、Tailwind 及 shadcn/ui,可构建现代化 SPA。 通过 Inertia,可以在保留服务端路由的同时使用 React 前端。Vue
采用 Vue Composition API、TypeScript、Tailwind 与 shadcn-vue。 同样使用 Inertia 与服务端连接。Livewire
使用 Livewire,只需 PHP 就能构建动态 UI。 适合以 Blade 模板为主的团队,或希望不使用 JavaScript 框架的场景。 内置 Flux UI 组件库。Svelte
采用 Svelte 5、TypeScript、Tailwind 与 shadcn-svelte。 结合 Inertia 可构建现代化 SPA。认证门面
使用Auth 门面可以获取当前已认证用户的信息或判断认证状态。
获取已认证用户
Request 对象获取用户。
判断认证状态
Auth::check() 会以 true / false 返回用户是否已登录。
@auth 与 @guest 指令会更方便。
路由保护
要创建只允许已登录用户访问的路由,请使用auth 中间件。
/login。
要一次性保护多个路由,可使用分组。
仅访客路由
要将已登录用户重定向到别处,可使用guest 中间件。
对登录和注册页面使用它,可以把已登录用户直接跳转到仪表盘。
手动认证
不使用启动套件、手动实现登录时可使用Auth::attempt()。
Auth::attempt() 的第一个参数是凭据数组。
密码会自动与哈希比对,因此直接传入明文即可。
要实现「记住登录状态」功能,把 true 作为第二个参数传入。
即使自己实现认证,也建议参考启动套件的代码——它是安全实现的好范本。
登出
要登出用户,请调用Auth::logout()。
最佳实践是同时使 Session 失效并重新生成 CSRF 令牌。
小结
下一步
中间件
详细了解
auth 中间件的机制及如何编写自定义中间件。