這個指南幫助您解決部署 Shieldon 防火牆在您的 Laravel 應用程式的疑問。這些指引並不是惟一能夠達成的方法,只是給您一些點子。 如下的步驟已經在 Laravel 5 及 6 中測試過。 php
使用的套件: Shieldon Firewall
GitHub: https://github.com/terrylinoo...
文章英文版: Laravel Firewallhtml
使用 PHP Composer:laravel
composer require shieldon/shieldon
或者下載後引入 Shieldon 自動加載器。git
require 'Shieldon/autoload.php';
藉著使用 Shieldon 面板,部署 Shieldon 防火牆在您的網站應用程序上是相當簡單的。我強烈建議您選用這個方法。github
對於 Laravel 愛好者,您能夠選擇 中介程序 或 引導程序 來部署 Shieldon 防火牆在您的網站應用程序上。我我的偏好引導程序。bootstrap
定義一箇中介程序名為 ShieldonFirewall
bash
php artisan make:middleware ShieldonFirewall
在 ShieldonFirewall
中介程序的
類別中加入如下代碼:restful
$firewall = new \Shieldon\Firewall(storage_path('shieldon')); // 轉傳 Laravel CSRF Token 到驗證碼錶單。 $firewall->getShieldon()->setCaptcha(new \Shieldon\Captcha\Csrf([ 'name' => '_token', 'value' => csrf_token(), ])); $firewall->restful(); $firewall->run();
修改 app/Http/Kernel.php
而後加入這一行到$routeMiddleware
屬性中。app
'firewall' => \App\Http\Middleware\ShieldonFirewall::class,
咱們須要一個控制器以進入 Shieldon 防火牆控制面板,因此呢...composer
Route::any('/your/secret/place/', function() { $firewall = \Shieldon\Container::get('firewall'); $controlPanel = new \Shieldon\FirewallPanel($firewall); $controlPanel->csrf('_token', csrf_token()); $controlPanel->entry(); })->middleware('firewall');
Shieldon 將會開始監看您的網站,若是在設定區塊中的 守護進程
有啓用的話。
firewall
中介程序到路由。指派 firewall
中介程序 到任何您想要保護的路由。例如:
Route::get('/', function () { return view('welcome'); })->middleware('firewall');
這就是我所說,我偏好的方法,由於比較少的步驟,且會避免可能發生和 Laravel 內建功能的衝突。
在您的 bootstrap/app.php
中,在<?php
,
以後加入如下代碼。
/* |-------------------------------------------------------------------------- | 運行 Shieldon 防火牆 |-------------------------------------------------------------------------- | | Shieldon 防火牆將開始監看全部進入您網站的 HTTP 請求。 | 在初始化 Laravel 以前運行 Shieldon 防火牆會避免和 Laravel 內建功能的衝突。 | */ if (isset($_SERVER['REQUEST_URI'])) { // 注意這個目錄必須可寫入。 $firewallstorage = __DIR__ . '/../storage/shieldon'; $firewall = new \Shieldon\Firewall($firewallstorage); $firewall->restful(); $firewall->run(); }
Route::any('/your/secret/place/', function() { $firewall = \Shieldon\Container::get('firewall'); $controlPanel = new \Shieldon\FirewallPanel($firewall); $controlPanel->csrf('_token', csrf_token()); $controlPanel->entry(); });
若是您採用這個方式,Shieldon 防火牆將會在全域範圍運行,不過不用擔憂,您能夠針對想要 Shiedon 防火牆忽略的網址設定設定排除列表。
就是這樣囉。
如今,您能夠鏈接上防火牆面板,透過網址:
https://for.example.com/your/secret/place/
預設的登入賬號是 shieldon\_user
而密碼是 shieldon\_pass
。在您登入防火牆面板以後,第一件該作的事情就是更改賬號及密碼。
若是在設定區塊中的 守護進程
有啓用的話,Shieldon 將會開始監看您的網站,請肯定您已經把設定值都設定正確。