您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
auth中间件及路由组定义
发布时间:2024-10-31 10:36:04编辑:雪饮阅读()
-
路由与路由组
最基本的 Laravel 路由接受 URI 和闭包,提供了一种非常简单且富有表现力的方法来定义路由和行为,而无需复杂的路由配置文件:
Route::get('/greeting', function () {
return 'Hello World';
});
默认路由文件被定义于routes/web.phproutes/web.php
对于大多数应用程序,您将首先在文件中定义路由。可以通过在浏览器中输入定义的路由的 URL 来访问 中定义的路由。例如,您可以通过在浏览器中导航到来访问以下路线:
http://example.com/user
Route::get('/user', [UserController::class, 'index']);
对应user控制器
class UserController extends Controller
{
public function index(Request $request)
{
return "index";
}
}
文件中定义的路由由 .在组中,URI 前缀会自动应用,因此您无需手动将其应用于文件中的每个路由。
auth中间件
中间件提供了一种方便的机制来检查和筛选进入应用程序的 HTTP 请求。例如,Laravel 包含一个中间件,用于验证应用程序的用户是否经过身份验证。如果用户未经过身份验证,中间件会将用户重定向到应用程序的登录屏幕。但是,如果用户经过身份验证,中间件将允许请求进一步进入应用程序。
可以编写其他中间件来执行除身份验证之外的各种任务。例如,日志记录中间件可能会记录对应用程序的所有传入请求。Laravel 框架中包含多个中间件,包括用于身份验证和 CSRF 保护的中间件。所有这些中间件都位于app/Http/Middleware
定义一个中间件可以使用命令如
./vendor/bin/sail artisan make:middleware EnsureTokenIsValid
然后我们可以编写定义的这个中间件的handle方法实现如
public function handle(Request $request, Closure $next): Response
{
$this->log("token:".$request->input('token'));
if ($request->input('token') !== 'my-secret-token') {
return redirect('/');
}
return $next($request);
}
然后在web.php的路由中应用该中间件
Route::get('/user', [UserController::class, 'index'])->middleware([EnsureTokenIsValid::class]);
则此时/user的访问还必须加上token且值必须是my-secret-token,否则就会回到应用首页。则正确访问应如:
localhost/user?token=my-secret-token
而关于auth中间件,我们使用了Laravel Breeze中已经帮我们实现好了,像我们上篇中获取当前用户的project列表用了$request->user()这种就是。
因为auth成功后request->user才会有结果。
那么这里为了让之前的project列表也方便直接在界面上面操作,所以我们可以也像是profile一样做在右上角账号名称旁边的下拉菜单里面
Y:\root\example-app\resources\js\Layouts\ AuthenticatedLayout.vue
找到
<DropdownLink
:href="route('profile.edit')"
>
Profile
</DropdownLink>
在其下面添加
<DropdownLink
:href="route('project.index')"
>
Project
</DropdownLink>
本期词汇
artisan 工匠,技工
Authenticated 已验证(authenticate 的过去分词)
Middleware 中间件;中间设备
关键字词:auth