2017-08-03 56 views
0

方法这是我中间件:如何使用中间件laravel

<?php 

namespace App\Http\Middleware; 

use Closure; 

class CheckSession 
{ 
    public function handle($request, Closure $next) 
    { 
     return $next($request); 
    } 

    public function CheckSessionPageReuestTokenFailed($request, $next) 
    { 
     if ($request->session()->has('request_failed')) { 
      return $next($request); 
     } else { 
      echo 'forbidden'; 
     } 
    } 

} 

我怎么可以使用方法CheckSessionPageReuestTokenFailed($请求,$下一个)?

感谢

回答

0

你为什么写这个方法?你可以把这段代码写入句柄方法。

public function handle($request, Closure $next) 
    { 
     if ($request->session()->has('request_failed')) { 
      return $next($request); 
     } else { 
      echo 'forbidden'; 
     } 
    } 

,你也需要注册这个中间件为$routeMiddleware阵列 app/Http/Kernel.php文件。 加入这一行: 'CheckSession' => CheckSession::class,

读laravel文档,以了解更多https://laravel.com/docs/5.4/middleware

+0

btw我已经注册了这个中间件 – tejoprabowo

+0

,因为我会在其中创建多个函数daloam中间件那? – tejoprabowo

+0

您可以在中间件中编写多个函数,但您必须在句柄方法中调用这些函数。您必须在路由中使用注册的中间件名称 –

0
public function handle($request, Closure $next) 
{ 
    $this->CheckSessionPageReuestTokenFailed($request, $next); 

    return $next($request); 
} 
+0

,我可以把它直接的路线吗? – tejoprabowo

+0

是的。使用类,'CheckSession'。 请阅读https://laravel.com/docs/5.4/middleware#assigning-middleware-to-routes – Jed

0

你可以在里面handle()方法使用。

public function handle($request, Closure $next) 
{ 
    $this->CheckSessionPageReuestTokenFailed($request, $next); 
    return $next($request); 
} 
+0

假设我有1个方法了,我想更具体的使用方法2,我该如何调用方法到2呢? 例如: 公共函数句柄($ request,Closure $ next) { $ this-> CheckSessionPageRequestTokenFailed($ request,$ next); $ this-> CheckSessionPageRequestTokenFailed2($ request,$ next); return $ next($ request); } 我怎么能调用方法$ this-> CheckSessionPageRequestTokenFailed2($ request,$ next);在路线或控制器上 – tejoprabowo

+0

与示例中的方法相同。您还可以检查第一个方法是否返回true或false来调用方法2 – lstonon

+0

在您的路线文件中,您应该添加中间件。像这样: Route :: group(['prefix'=>'example','middleware'=>'checksession'],function(){ \t});你应该添加checksession => \ App \ Http \ Middleware \ CheckSession :: class' – lstonon