Criando uma aula de middleware simples

Criando uma aula de middleware simples

Problema

Você deseja adicionar middleware ao seu aplicativo, mas não sabe por onde começar.

Solução

Crie uma aula de middleware simples.

Etapa 1 - Crie a classe

use symfony \ component \ httpfoundation \ request;
Use Symfony \ Component \ httpfoundation \ Response;
use symfony \ component \ httpkernel \ httpkernelinterface;
classe Middleware implementa httpkernelinterface
App $ protegido;
/**
* Construtor
*/
Função pública __construct (httpkernelinterface $ app)

$ this-> app = $ app;

/**
* Lidar com a solicitação, retorne a resposta
*
* @implements httpkernelinterface :: handle
*
* @param \ symfony \ component \ httpfoundation \ request $ solicitação
* @param int $ tipo
* @param bool $ captura
* @return \ symfony \ component \ httpfoundation \ resposta
*/
identificador de função pública (solicitação $ solicitação,
$ type = httpkernelinterface :: master_request, $ catch = true)

// 1) Modifique a solicitação de entrada, se necessário
..
// 2) Corrente o manipulador de aplicativos para obter a resposta
$ resposta = $ this-> app-> handle ($ request, $ type, $ catch);
// 3) Modifique a resposta se necessário
..
// 4) Retorne a resposta
Retornar $ resposta;


?>

Etapa 2 - Registre a aula de middleware

Você precisa fazer isso no método registring () de um provedor de serviços.

App :: middleware ('myApp \ middleware');

Como alternativa, você pode instalar um pacote simples que eu criei que permite registrar seu middleware em aplicativo/start/pré -boot.php. Veja os gancho de Laravel para obter detalhes.

Discussão

A classe acima não faz nada.

Mas é um bom esqueleto para começar. Obviamente, você precisará alterar o espaço para nome e o nome da classe para se ajustar ao seu aplicativo.

Então você pode querer tentar registrar algo para garantir que funcione. Você pode atualizar o método Handle () da sua classe, conforme especificado abaixo.

// Na etapa 1) modifique a solicitação de entrada, se necessário
// Faça login em um arquivo. Desde aplicativo/start/global.PHP não foi atingido
// No entanto, a fachada de log não está definida para fazer login em um arquivo ainda. Então apenas
// Escreva diretamente em um arquivo.
$ logfile = storage_path ().'/Logs/Laravel.registro';
error_log ("entrada do middleware \ n", 3, $ logfile);
// na etapa #3) Modifique a resposta se necessário
// Faça login em um arquivo. Estamos seguros para usar a fachada de log agora que
// Deve ser configurado no aplicativo/start/global.php
Log :: info ("saída do middleware");

Agora você pode examinar seu App/armazenamento/logs/Laravel.registro arquivo para ver que seu middleware funciona.