【note編成】laravel HTTPミドルウェアの導入と作成

演明
リリース: 2021-09-15 11:42:30
オリジナル
1356 人が閲覧しました

以下は、php 中国語 Web サイトのビデオを見ながらまとめたメモです。参考にしてください。以下に基礎知識を記載しますので、基礎知識が分からない方はご覧ください。私が共有した最後の記事は、composer の laravel のインストールについてでした。さらに記事を見たい場合は、私をフォローしてください。お役に立てれば幸いです。

ミドルウェアは、実際にはルートに追加されるフィルタリングまたは保護の層です。プレフィックスと名前空間はグループの配列パラメータとして渡され、ミドルウェアもグループの配列パラメータとして渡されます

#1. ミドルウェアの作成##ミドルウェア追加前

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ミドルウェアはセッション機能を利用することができます。 CSRF保護を有効にします

Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
ログイン後にコピー

そしてセッションを出力するルートを設定します

Route::get('/test',function(){
echo session('key');
return 'test';
});
ログイン後にコピー

しかし、ミドルウェア内にないため、セッションの値を取得できません

次へルートをグループに入れるミドルウェアを設定します

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 ミドルウェアを使用する場合にのみ使用されます

2. 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
ログイン後にコピー

次に、ミドルウェア フォルダー内の 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(&#39;/&#39;,function(){
session([&#39;key&#39;=>123]);
return view(&#39;welcome&#39;);
});
Route::get(&#39;/test&#39;,function(){
echo session(&#39;key&#39;);
return &#39;test&#39;;
});
});
ログイン後にコピー

3. バックグラウンド スーパー管理者の確認

Route::group([&#39;prefix&#39; => &#39;admin&#39;,&#39;namespace&#39;=>&#39;Admin&#39;,&#39;middleware&#39;=>&#39;web&#39;], function () {
Rount::get(&#39;login&#39;,&#39;IndexController@login&#39;);//登录不需要后台管理员的超级认证
});
Route::group([&#39;prefix&#39; => &#39;admin&#39;,&#39;namespace&#39;=>&#39;Admin&#39;,&#39;middleware&#39;=>&#39;admin.login&#39;], function () {
Rount::get(&#39;index&#39;,&#39;IndexController@index&#39;);//超级管理员需要认证后才能进入欢迎页面和编辑页面
Rount::resource(&#39;article&#39;,&#39;ArticleController&#39;);
});
ログイン後にコピー
どのユーザーでもログインできますが、ログインに成功すると、ようこそページが表示され、ログインログイン ページでは、ログイン情報がセッションに保存されているため、セッション情報を使用してログインするかどうかを決定します。

ログインのシミュレーションでは、ログイン情報をセッションに書き込みます。次に、Admin パッケージの下にある IndexController コントローラーを見つけます

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(){
return view(&#39;welcome&#39;);
}
    function login(){
session([&#39;admin&#39;=>1]); //登录信息用admin存储
     return &#39;<h1>登录<h1>&#39;
   }
}
ログイン後にコピー

ミドルウェアでセッションを出力してテストします

次に、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(&#39;admin&#39;);
        return $next($request);     
               
    }
}
ログイン後にコピー

検証:

最初にログインし、ようこそページにアクセスします。1 が出力されれば、設定が成功したことを意味します (ログイン時にセッションに 1 を保存し、その後ウェルカム ページに入ります。ウェルカム ページでは、ミドルウェアの AdminLogin.php が呼び出されます)、

引き続き、ミドルウェア フォルダーに 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(&#39;admin&#39;)){
return redirect(&#39;admin/login&#39;); //如果没有登录跳转到登录页面
};
        return $next($request);     
               
    }
}
ログイン後にコピー
上記の手順は私の勉強メモです。手順や操作のポイントなどを書き留めておきました。わからないことがあればメッセージを残していただけます。ご協力ありがとうございます。もっと詳しい情報が必要な場合は、私をフォローして、次の記事で引き続き共有してください。

以上が【note編成】laravel HTTPミドルウェアの導入と作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート