亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何創建laravelHTTP中間件

發布時間:2021-09-14 11:36:20 來源:億速云 閱讀:137 作者:柒染 欄目:編程語言

本篇文章為大家展示了如何創建laravel HTTP中間件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

中間件其實就是在路由上面加了一層過濾或是一層保護,前綴和命名空間都是作為group的數組參數傳進去的,中間件也是作為group的數組參數傳進去

一、中間件書寫

添加中間件前

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

添加web中間件后

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

web中間件可以用session功能,啟用CSRF保護

Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});

再設置一個路由,用來輸出session

Route::get('/test',function(){
echo session('key');
return 'test';
});

但因為不在一個中間件里,所以取不出session的值

下面我們設置一下把路由放到一個分組的中間件

Route::group(['middleware'=>['web']], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

系統默認的web中間件,中間件在Kernel.php中

使用web中間件時,才會使用session

二、自己手動在Kernel.php文件中定義一個后臺管理云登錄的中間件

定義前:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];

定義后:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
 'admin.login' => \App\Http\Middleware\AdminLogin::class,
    ];

在cmd窗口切換到項目目錄可以用命令創建中間件

php artisan make:middleware AdminLogin

然后在Middleware文件夾查看AdminLogin.php文件

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
       echo 12344445;
        return $next($request);     
               
    }
}

然后調用剛才創建的中間件

Route::group(['middleware'=>['web','admin.login'],], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

三、后臺超級管理員的驗證

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () {
Rount::get('login','IndexController@login');//登錄不需要后臺管理員的超級認證
});
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () {
Rount::get('index','IndexController@index');//超級管理員需要認證后才能進入歡迎頁面和編輯頁面
Rount::resource('article','ArticleController');
});

任何一個用戶都可以登錄,但是如果登錄了成功,就進入歡迎頁面,沒有登錄成功就在登錄頁面,因為登錄的信息存到session里,所以我們利用session的信息判斷是否登錄

模擬登錄是將登錄信息寫到session里面,然后找到Admin包下IndexController控制器

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(){
return view('welcome');
}
    function login(){
session(['admin'=>1]); //登錄信息用admin存儲
     return '<h2>登錄<h2>'
   }
}

我們在中間件里輸出session測試一下

然后在Middleware文件夾查看AdminLogin.php文件

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
       echo session('admin');
        return $next($request);     
               
    }
}

驗證:

我們先登錄一下,然后訪問歡迎頁面,如果輸出1,表示我們設置成功了(登錄時把1存到session里,然后進入歡迎頁面,歡迎頁面會調用中間件的AdminLogin.php,),

我們繼續設置

Middleware文件夾的AdminLogin.php文件

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(!session('admin')){
return redirect('admin/login'); //如果沒有登錄跳轉到登錄頁面
};
        return $next($request);     
               
    }
}

上述內容就是如何創建laravel HTTP中間件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五莲县| 于都县| 磐石市| 乌苏市| 克东县| 南阳市| 辽阳县| 屯门区| 二连浩特市| 临沭县| 玛曲县| 启东市| 平乐县| 浮山县| 苏州市| 临湘市| 兴山县| 兴文县| 独山县| 哈巴河县| 昭平县| 汨罗市| 寻乌县| 昌黎县| 青龙| 镇远县| 永州市| 永嘉县| 龙胜| 卫辉市| 东宁县| 绿春县| 蓝山县| 深泽县| 南汇区| 蓝田县| 五常市| 永定县| 南木林县| 万年县| 眉山市|