laravel框架 路由 中间件 交互
发布日期:2021-06-30 15:37:09 浏览次数:2 分类:技术文章

本文共 4420 字,大约阅读时间需要 14 分钟。

路由文件 web.php 为例子

'Taylor']);//路由参数Route::get('/one/{id}',function($id){ return 'One '.$id;});//路由别名Route::get("user/one",function(){ return 'UserOne';})->name("userone");//你还可以指定控制器行为的路由名称:Route::get("user/pro",'UserController@pro')->name("pro");//别名生成指定的路由//生成url// 用助手函数 route('pro')//生成重定向//return redirect()->route('pro');//如果有定义参数的命名路由 可以把参数作为route 函数的第二个参数传入 Route('one',['id'=>2])//例Route::get("one/{id}/two/",function($id){ return $id;})->name("one");//路由组调用中间件 在 group调用之前调用middleware方法//中间件会依照它们在数组中列出的顺序来运行:Route::middleware(['first','second'])->group(function(){ Route::get("/aaa",function(){ // 使用 first 和 second 中间件 return 'this is aaa'; }); Route::get("/bbb",function(){ // 使用 first 和 second 中间件 return 'this is bbb'; });});//命名空间//根据命名空间来分配路由Route::namespace("Admin")->group(function(){ // 在 "App\Http\Controllers\Admin" 命名空间下的控制器});// 路由前缀 使用 url函数 会触发Route::prefix('admin')->group(function () { Route::get('ccc', function () { // 匹配包含 "/admin/users" 的 URL // 方法来访问处理传入请求的路由的信息: $route = Route::current(); print_r($route); $name = Route::currentRouteName(); print_r($name); $action = Route::currentRouteAction(); print_r($action); });});//访问控制//中间件用于控制应用程序对路由的访问// 如果想使用 请将throttle中间件分配给一个路由或者路由组// throttle中间件会接受两个参数 ,这两个参数决定了在给定的分钟数内可以进行的最大请求数// 例如 让我们指定一个经过身份验证并且用户每分钟访问频率不超过 60 次的路由:Route::middleware('auth:web', 'throttle:60,1')->group(function () { Route::get('/ddd', function () { // });});//什么是中间件//定义中间件// 命令 php artisan make:middleware CheckAge//中间件触发 前置触发 后置触发//注册中间件//全局中间件//假设你想让中间件在应用处理每个HTTP请求期间运行//只需要在app\Http\Kernel.php中的$middleware属性中列出这个中间件//假如你想为指定的路由分配中间件// 首先应该在 app\Http\Kernel.php 文件内为该中间件分配一个 键// 默认情况下 kernle.php类的 $routeMiddleware 属性下包含了框架的内置的中间件// 若需要加入自定义中间件 只需要把自定义的中间件类名追加到后面 然后分配一个 自定义键//一旦在 Kernel 类中定义好了中间件,就可以通过 middleware 方法将为路由分配中间件://你也可以为路由分配多个中间件Route::get("k/n",function(){ return 20;})->middleware("check",'test');//分配中间件的时候你可以传入完整的类名Route::get('n/s',function(){ return 30;})->middleware('web');//中间件组// 某些时候你可能希望使用一个key把多个中间件打包成一个组// 方便将他们应用到路由中 你可以使用app\Http\Kernel.php中 $middlewareGroups 属性// 框架中内置了 web和 api两个中间件组 他们包含了常用的中间件 应用到web.php 和api.php 路由中//中间件组和单个中间件一样 可以被应用到路由和控制器中 时,中间组很方便得将多个中间件一次性应用到路由上:// 在 kernel.php文件中 命名key值时 不管每个属性 key都不能重复//Route::get('/', function () {// ////})->middleware('web');////Route::group(['middleware' => ['web']], function () {// ////});//Providers 目录//目录包含了应用的所有 服务提供器 。//服务提供器通过在服务容器中绑定服务、注册事件、以及执行其他任务来为即将到来的请求做准备来启动应用。// RouteServiceProvider.php文件 将 web 中间组自动应用到 routes/web.php 。//中间件参数//中间件也可以接受额外的参数。举个例子,假如你的应用需要在执行特定操作之前验证用户是否为给定的 「角色」,//你可以通过创建一个 CheckRole 中间件,由它来接收「角色」名称作为附加参数。//附加的中间件参数应该在 $next 参数之后被传递Route::get("b/n",function(){ return 20;})->middleware("role:editor");//定义路由时通过一个 : 来隔开中间件名称和参数来指定中间件参数。多个参数就使用逗号分隔//Terminable 中间件//有时中间件可能需要在 HTTP 响应发送到浏览器之后处理一些工作。//比如,Laravel 内置的「session」中间件会在响应发送到浏览器之后将会话数据写入存储器中。//如果你在中间件中定义一个 terminate 方法,则会在响应发送到浏览器后自动调用:下面是 Kernel.php 内容

 

[ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ]; /** * The application's route middleware. * 为路由增加中间件 * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, //自定义中间件 'check'=>CheckAge::class, 'test'=>testAge::class, 'role'=>CheckRole::class ];}

 

下面是自定义的一个中间件内容

 

中间件 路由交互 基本上就是这三个文件在相互编写设置 就可以达到中间件的作用 

转载地址:https://jsonll.blog.csdn.net/article/details/104948974 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PHP 对rabbitMQ的详细使用讲解测试(TP5) 版本一
下一篇:go 进程 线程 协程 并发

发表评论

最新留言

不错!
[***.144.177.141]2024年04月25日 11时18分34秒