ミドルウェアがログインプロセスを処理します
1つは、ミドルウェアを定義する
<?php
namespace app\middleware;
class Check
{
public function handle($request, \Closure $next)
{
if ($request->param('name') == 'think') {
return redirect('index/think');
}
return $next($request);
}
}
ミドルウェアクラスには任意の名前を付けることができます。ミドルウェアのエントリ実行メソッドはメソッドである必要がhandle
あり、最初のパラメーターはRequest
オブジェクトで、2番目のパラメーターは1闭包
です。
2つ、前後のミドルウェア
ミドルウェアが特定の操作が要求される前に実行されるか後に実行されるかは、ミドルウェア自体の定義に完全に依存します。
以下は、事前動作を備えたミドルウェアです。
<?php
namespace app\middleware;
class Before
{
public function handle($request, \Closure $next)
{
// 添加中间件执行代码
return $next($request);
}
}
以下は、事後動作を備えたミドルウェアです。
<?php
namespace app\middleware;
class After
{
public function handle($request, \Closure $next)
{
$response = $next($request);
// 添加中间件执行代码
return $response;
}
}
3、ミドルウェアを登録する
新しいミドルウェアが分割され全局中间件
、应用中间件(多应用模式下有效)
、路由中间件
そして控制器中间件
四つのグループ。実行の順序は次のとおりです。
グローバルミドルウェア->アプリケーションミドルウェア->ルーティングミドルウェア->コントローラミドルウェア
1.グローバルミドルウェア
グローバルミドルウェアは、次の方法を使用して、app
ディレクトリの下のmiddleware.php
ファイルで定義されます。
<?php
return [
\app\middleware\Auth::class
];
ミドルウェアの登録には完全なクラス名を使用する必要があります。ミドルウェアのエイリアス(またはグループ)が定義されている場合は、直接使用できます。グローバルミドルウェアの実行順序は定義順序です。
2.アプリケーションミドルウェア
マルチアプリケーションモードを使用する場合、アプリケーションミドルウェア定義がサポートされます。アプリケーションディレクトリの下にmiddleware.php
ファイルを直接追加できます。定義方法はグローバルミドルウェア定義と同じですが、アプリケーションでのみ有効になります。
3.ルーティングミドルウェア
最も一般的に使用されるミドルウェアの登録方法は、ルーティングミドルウェアを登録することです。
Route::rule('hello/:name','hello')->middleware(\app\middleware\Auth::class);
複数のミドルウェアの登録をサポートします。
Route::rule('hello/:name','hello')->middleware([\app\middleware\Auth::class, \app\middleware\Check::class]);
4.コントローラーミドルウェア
コントローラのミドルウェアを定義するためのサポート。コントローラでmiddleware
属性を定義するだけで済みます。次に例を示します。
<?php
namespace app\controller;
class Index
{
protected $middleware = ['auth'];
public function index()
{
return 'index';
}
public function hello()
{
return 'hello';
}
}
auth
ミドルウェアは、インデックスコントローラが実行されるときに呼び出され、完全な名前名定義もサポートされます。
5.ビルトインミドルウェア
ミドルウェア | 説明 |
---|---|
think \ middleware \ AllowCrossDomain | クロスドメインリクエストのサポート |
think \ middleware \ CheckRequestCache | リクエストキャッシュ |
think \ middleware \ LoadLangPack | 多言語ローディング |
think \ middleware \ SessionInit Session | 初期化 |
think \ middleware \ FormTokenCheck | フォームトークン |
これらの組み込みミドルウェアは、デフォルトでは定義されていません。middleware.php
これらのミドルウェアは、アプリケーションファイル、ルート、またはコントローラーで定義できます。使用する必要がない場合は、定義をキャンセルしてください。
第四に、ミドルウェアの使用-バックグラウンドログインページジャンププロセス
バックグラウンドホームページにアクセスするときに、すでにログインしている(セッションが記録されている)場合は、注意を入力できます。そうでない場合は、ログインページに戻ることができます。バックグラウンドログインページにアクセスしている場合は、すでにログインしている(セッションが記録されている)場合は、直接ホームページにジャンプします。それ以外の場合は、ログインページに入ります。 。
1.認証ミドルウェアを作成します
admin
作成しmiddleware
たフォルダ内のアプリケーションのフォルダを作成し、Auth.php
ミドルウェアファイルを:
<?php
namespace app\admin\middleware;
use think\Response;
class Auth
{
public function handle($request, \Closure $next){
// 前置中间件
if(empty(session(config("admin.session_admin"))) && !preg_match("/login/",$request->pathinfo()) ){
return redirect(url('login/index'));
}
if(!empty(session(config("admin.session_admin"))) && preg_match("/login\/index/",$request->pathinfo())){
return redirect(url('index/index'));
}
$response = $next($request);
// 后置中间件
return $response;
}
public function end(Response $response){
}
}
admin.session_admin
これは、admin / configフォルダーの下の構成ファイルで定義されています:
admin / config / admin.php
<?php
return [
'session_admin' => 'adminUser'
];
2.アプリケーションミドルウェアを登録します
admin
アプリケーションディレクトリに作成しますmiddleware.php
。
<?php
return [
\think\middleware\SessionInit::class,
app\admin\middleware\Auth::class
];