Laravel框架控制器的middleware中间件用法分析

本文实例讲述了Laravel框架控制器的middleware中间件用法。分享给大家供大家参考,具体如下:

场景:活动开始前只能访问宣传页面,开始后才可以访问其他页面:

步骤:

新建中间件,

注册中间件,

使用中间件,

中间件的前置和后置操作。

控制器:

public function activity0(){
  return '活动快要开始啦,敬请期待';
}
public function activity1(){
  return '活动页面1';
}
public function activity2(){
  return '活动页面2';
}

路由:

Route::any('activity0',['uses'=>'StudentController@activity0']);
Route::any('activity1',['uses'=>'StudentController@activity1']);
Route::any('activity2',['uses'=>'StudentController@activity2']);

在App\Http\Middleware下创建中间件Activity.php:

namespace App\Http\Middleware;
use Closure;
class Activity{
  public function handle($request,Closure $next){
    if(time() < strtotime('2018-01-01')){
      return redirect('activity0');
    }
    return $next($request);
  }
}
//注册中间件,在Kernel.php中的$routeMiddleware数组中增加
protected $routeMiddleware = [
  'activity' => \App\Http\Middleware\Activity::class,
];

使用中间件,路由中的设置

//宣传页面不需要中间件验证,不能放里边
Route::any('activity0',['uses'=>'StudentController@activity0']);
Route::group(['middleware'=>['activity']],function(){
  Route::any('activity1',['uses'=>'StudentController@activity1']);
  Route::any('activity2',['uses'=>'StudentController@activity2']);
});
//后置中间件
public function handle($request,Closure $next){
  $response = $next($request);
  echo $response;
  echo '我是后置操作';
}

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

(0)

相关推荐

  • laravel利用中间件防止未登录用户直接访问后台的方法

    中间件介绍 http://laravelacademy.org/post/7812.html 创建中间件 php artisan make:middleware AdminLogin 然后我们打开kernel.php,将这个中间件加入到$routeMiddleware路由中间件中 'admin.login' => \App\Http\Middleware\AdminLogin::class, 一个简单的小判断,判断一下有没有session存在,如果有的话就直接走我们现在访问的路由,如果没有ses

  • laravel框架中间件 except 和 only 的用法示例

    本文实例讲述了laravel框架中间件 except 和 only 的用法.分享给大家供大家参考,具体如下: except except:为黑名单机制,除了show页面不经过中间件Auth过滤,其他都需要过滤,如果没有通过验证,则跳转到指定的页面 only only:为白名单机制,除了edit页面需要经过中间件Auth过滤,其他都不需要过滤,如果没有通过验证,则跳转到指定的页面 except用法: class UserController extends Controller { public

  • Laravel 5框架学习之路由、控制器和视图简介

    查看 app/Http/routes.php 复制代码 代码如下: Route::get('/', 'WelcomeController@index'); @是一个界定符,前面是控制器,后面是动作,表示当用户请求url / 的时候,执行控制器 WelcomeController 中的 index 方法 复制代码 代码如下: app/http/controllers/welcomecontroller.php public function index() { return view('welco

  • Laravel 5框架学习之模型、控制器、视图基础流程

    添加路由 复制代码 代码如下: Route::get('artiles', 'ArticlesController@index'); 创建控制器 复制代码 代码如下: php artisan make:controller ArticlesController --plain 修改控制器 <?php namespace App\Http\Controllers; use App\Article; use App\Http\Requests; use App\Http\Controllers\Co

  • Laravel框架实现利用中间件进行操作日志记录功能

    本文实例讲述了Laravel框架实现利用中间件进行操作日志记录功能.分享给大家供大家参考,具体如下: 利用中间件进行操作日志记录过程: 1.创建中间件 php artisan make:middleware AdminOperationLog 2.生成了文件./app/Http/Middleware/AdminOperationLog.php 代码如下: <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\R

  • Laravel的throttle中间件失效问题解决方法

    本文实例讲述了Laravel的throttle中间件失效问题解决方法.分享给大家供大家参考,具体如下: 按官方解释,实现访问频率限制非常简单: Route::get('test', function(){ return 'helle world' ; })->middleware('throttle'); 也确实如此,cache存储访问次数,做出判断. 之前使用了zizaco/entrust(一个基于角色的权限管理包),其中把 .env 中的CACHE_DRIVER=file 改为了 CACHE

  • Laravel中间件实现原理详解

    本文实例讲述了Laravel的中间件实现原理.分享给大家供大家参考,具体如下: #1 什么是中间件? 对于一个Web应用来说,在一个请求真正处理前,我们可能会对请求做各种各样的判断,然后才可以让它继续传递到更深层次中.而如果我们用if else这样子来,一旦需要判断的条件越来越来,会使得代码更加难以维护,系统间的耦合会增加,而中间件就可以解决这个问题.我们可以把这些判断独立出来做成中间件,可以很方便的过滤请求. #2 Laravel中的中间件 在Laravel中,中间件的实现其实是依赖于Illu

  • Laravel5.1框架注册中间件的三种场景详解

    本文实例讲述了Laravel5.1框架注册中间件的三种场景.分享给大家供大家参考,具体如下: 在Laravel中注册中间件主要有三种场景,一种给控制器中的方法进行注册,一种是给整个控制器进行注册,最后一种是给全局注册中间件. 1.在控制器中的方法中注册中间件 这种需求是最为常见,这个例子是给IndexController中的index方法添加中间件. Route::get('/', ['middleware'=>['App\Http\Middleware\EmailMiddleware'],'u

  • Laravel框架基于中间件实现禁止未登录用户访问页面功能示例

    本文实例讲述了Laravel框架基于中间件实现禁止未登录用户访问页面功能.分享给大家供大家参考,具体如下: 1.生成中间件 [root@localhost MRedis]# php artisan make:middleware CheckLogin Middleware created successfully. 2.实现中间件,在app\http\middleware\CheckLogin.php public function handle($request, Closure $next)

  • Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法

    本文实例讲述了Laravel5.1数据库连接.创建数据库.创建model及创建控制器的方法.分享给大家供大家参考,具体如下: 前言:laravel创建数据库,实际可以手动创建,如古老的phpmyadmin 等均可以. 一.数据库连接: 在根目录(laravel5.1下面有个.env文件,如果没有则会有个.env.example然后将此文件修改成.env文件即可) 打开文件: 找到: DB_HOST=127.0.0.1 //连接地址不使用localhost DB_DATABASE=homestea

  • Laravel 6 将新增为指定队列任务设置中间件的功能

    Taylor Otwell 在 Laravel 6 中新增了为指定队列任务设置中间件的能力,以便我们在执行某些队列任务之前先执行一些业务逻辑: This [pull request] adds an easy way to have job specific middleware for queued jobs. Global job middleware were actually already possible by calling Bus::pipeThrough([]) in a se

  • Laravel框架路由和控制器的绑定操作方法

    本文实例讲述了Laravel框架路由和控制器的绑定操作方法.分享给大家供大家参考,具体如下: 路由和控制器的关系 路由文件地址在\app\Http\routes.php,我们来看两种不同的路由. Route::get('/', function () { return view('welcome'); }); Route::get('/hi', function () { return 'hello world'; }); 以上均为绑定匿名函数的路由,虽然可以返回视图,也可以返回字符串,但本质都

随机推荐