zoukankan      html  css  js  c++  java
  • laravel中间件使用

    laravel内置了一个中间件来验证用户是否经过认证,如果用户没有经过认证,中间件会将用户重定向到登录页面,否则如果用户经过认证,中间件就会允许请求继续往前进入下一步操作。

    当然,除了认证之外,中间件还可以被用来处理更多其它任务。比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域);日志中间件可以记录所有进入站点的请求。

    Laravel框架自带了一些中间件,包括认证、CSRF 保护中间件等等。所有的中间件都位于 app/Http/Middleware 目录。

    中间是请求前还是请求后执行取决于中间件本身,以下中间件会在请求处理前执行一些任务:

     1 <?php
     2 
     3 namespace AppHttpMiddleware;
     4 
     5 use Closure;
     6 
     7 class Common
     8 {
     9 
    10     public function handle($request, Closure $next)
    11     {
    12         // 执行动作
    13      
    14         if(!$request->session()->has('huser')){
    15             return redirect("login/index");
    16         }
    17         return $next($request);
    18         
    19         
    20     }
    21 }

    而下面这个中间件则会在请求处理后执行其任务:

     1 <?php
     2 
     3 namespace AppHttpMiddleware;
     4 
     5 use Closure;
     6 
     7 class Common
     8 {
     9 
    10     public function handle($request, Closure $next)
    11     {
    12         $response = $next($request);
    13 
    14         // 执行动作
    15         if(!$request->session()->has('huser')){
    16             return redirect("login/index");
    17         }
    18         
    19         return $response;
    20     
    21         
    22         
    23     }
    24 }

    分配中间件到路由,下面介绍三种方式

     1 Route::get('/',function(){
     2     return redirect('home/index');
     3 })->middleware('common');
     4 
     5 
     6 
     7 Route::group(['middleware' => ['common']], function() {
     8     Route::controller("db","DataBaseController");
     9 });
    10 
    11 
    12 Route::controller("home","HomeController",['middleware'=>'common']);
  • 相关阅读:
    Markdown 列表、区块、代码(三)
    Markdown 标题、段落、文本(二)
    Markdown 简介(一)
    禅道学习笔记
    地图源改变之后mxd文件打开很慢的问题
    关于iReport报表的分页
    在VC项目中附加包含目录
    类静态成员变量的使用
    UI基础--UISlider&UIProgress
    UI基础--UISwitch
  • 原文地址:https://www.cnblogs.com/fwqblogs/p/6641569.html
Copyright © 2011-2022 走看看