laravelÖÐÐļþµÄʵÏÖÀú³Ì
Ëæ×Å»¥ÁªÍøºÍwebÓ¦ÓõÄÒ»Ö±Éú³¤£¬web¿ª·¢¿ò¼ÜÒ²Ò»Ö±Ó¿ÏÖ£¬ÆäÖУ¬laravel¿ò¼Ü»ñµÃÁËÆÕ±éµÄÈϿɺÍʹÓá£laravel¿ò¼ÜΪ¿ª·¢ÕßÌṩÁËÖÐÐļþÕâÒ»Ö÷ÒªµÄ¹¦Ð§£¬ÔÚÓ¦ÓÃÖÐͨ¹ýÖÐÐļþ¶ÔÇëÇó¾ÙÐйýÂ˺ʹ¦Àí£¬ÓÐÓÃÌá¸ßÁË¿ª·¢Ð§ÂʺÍÇå¾²ÐÔ¡£±¾ÎĽ«ÏêϸÏÈÈÝlaravelÖÐÐļþµÄʵÏÖÀú³Ì£¬ÒÔ×ÊÖú¿ª·¢Õ߸üºÃµØÃ÷È·ºÍÓ¦ÓÃÕâÒ»¹¦Ð§¡£
Ò»¡¢Ê²Ã´ÊÇÖÐÐļþ
ÔÚLaravel¿ò¼ÜÖУ¬ÖÐÐļþ£¨Middleware£©Ö¸µÄÊǶԽøÈëÓ¦ÓõÄHTTPÇëÇó¾ÙÐйýÂ˺ʹ¦ÀíµÄÒ»ÖÖ»úÖÆ£¬ÀàËÆÓÚ´úÂëÖг£¼ûµÄ×èµ²Æ÷ºÍ¹ýÂËÆ÷µÄ¿´·¨¡£Ò»Ñùƽ³£ÇéÐÎÏ£¬ÖÐÐļþ»á×öһЩͨÓõĴ¦ÀíÊÂÇ飬ºÃ±È£º
ÈÏÕæ¶ÔÇëÇó¾ÙÐÐÉí·ÝÑéÖ¤£»
¼ì²é²¢ÏÞÖÆÇëÇóµÄ»á¼ûƵÂÊ£»
ά»¤»á»°×´Ì¬£»
ƾ֤ÇëÇóÖеÄHeaderÐÅÏ¢£¬ÉèÖöÔÓ¦µÄÏìÓ¦HeaderµÈ¡£
Laravel¿ò¼ÜÌṩÁËһЩÄÚÖõÄÖÐÐļþ£¬ºÃ±ÈÉí·ÝÑéÖ¤ÖÐÐļþ¡¢CSRFÖÐÐļþ¡¢ÏÞÁ÷ÖÐÐļþµÈ£¬¿ª·¢ÕßÒ²¿ÉÒÔ×ÔÐбàд×Ô½ç˵ÖÐÐļþÀ´Öª×ãÓ¦ÓõÄÌض¨ÐèÇó¡£
¶þ¡¢ÖÐÐļþµÄʵÏÖÔÀí
Laravel¿ò¼ÜµÄÖÐÐļþ»úÖÆÊÇ»ùÓÚPSR-15±ê׼ʵÏֵġ£ÔÚLaravelÖУ¬ÖÐÐļþÒ»Ñùƽ³£°üÀ¨Á½¸ö²¿·Ö£ºÖÐÐļþÀàºÍÖÐÐļþŲÓ᣽ÓÏÂÀ´£¬ÎÒÃÇ»®·Ö¶ÔÕâÁ½²¿·Ö¾ÙÐÐÏêϸÏÈÈÝ¡£
ÖÐÐļþÀà
ÖÐÐļþÀàÊÇʵÏÖÖÐÐļþÂß¼µÄ½¹µã²¿·Ö£¬Ò»Ñùƽ³£ÐèҪʵÏÖPSR-15Öнç˵µÄMiddlewareInterface½Ó¿ÚÖеÄprocessÒªÁì¡£¸ÃÒªÁì½ÓÊÜÁ½¸ö²ÎÊý£¬¼´Ä¿½ñÇëÇ󹤾ߺÍÒ»¸ö»Øµ÷º¯Êý£¬»Øµ÷º¯ÊýÈÏÕ潫ÇëÇóת´ï¸øÏÂÒ»ÆäÖÐÐļþ»òÓ¦ÓóÌÐò¡£
ÖÐÐļþµÄ´¦ÀíÂß¼Ò»Ñùƽ³£ÔÚprocessÒªÁìÖÐʵÏÖ£¬¿ÉÒÔ¶ÁÈ¡ÇëÇóÊý¾Ý£¬ÐÞ¸ÄÏìÓ¦Êý¾Ý£¬ÒÔ¼°Ö´ÐÐÆäËûÌض¨µÄ²Ù×÷¡£Ê¾Àý´úÂëÈçÏ£º
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class MyMiddleware { /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { // ÅжÏÄ¿½ñÇëÇóÊÇ·ñЯ´øtoken if (!$request->header('Authorization')) { return response()->json(['message' => 'Unauthorized'], 401); } // Ö´ÐÐÏÂÒ»ÆäÖÐÐļþ»òÓ¦ÓóÌÐò return $next($request); } }
µÇ¼ºó¸´ÖÆ
ÉÏÊö´úÂëÖУ¬ÎÒÃǽç˵ÁËÒ»¸öÃûΪMyMiddlewareµÄÖÐÐļþÀ࣬ËüÅжÏÇëÇóÊÇ·ñЯ´øAuthorizationÍ·²¿ÐÅÏ¢£¬ÈôÊÇδЯ´ø£¬Ôò·µ»ØδÊÚȨµÄÏìÓ¦£»ÈôÊÇÒÑЯ´ø£¬ÔòÖ´ÐÐÏÂÒ»ÆäÖÐÐļþ»òÓ¦ÓóÌÐò¡£
ÖÐÐļþŲÓÃ
ÔÚLaravel¿ò¼ÜÖÐÒýÈëÖÐÐļþµÄ·½·¨ºÜÊÇÎÞа£¬¿ª·¢Õß¿ÉÒÔÕë¶Ô²î±ðµÄÇëÇ󷾶¡¢ÇëÇóÒªÁì¡¢ÇëÇóÀàÐ͵ÈÌõ¼þÒýÈë²î±ðµÄÖÐÐļþ£¬Ò²¿ÉÒÔͨ¹ýÖÐÐļþ×éµÄ·½·¨ÅúÁ¿ÒýÈë¡£ÏÂÃæÊǼ¸ÖÖ³£¼ûµÄÒýÈë·½·¨£º
ÒýÈëÈ«¾ÖÖÐÐļþ£º½«ÖÐÐļþÌí¼Óµ½app/Http/Kernel.phpÎļþµÄ$middlewareÊôÐÔÖУ¬Ëü½«Ó¦ÓÃÓÚËùÓеÄÇëÇó¡£
// app/Http/Kernel.php protected $middleware = [ AppHttpMiddlewareMyMiddleware::class, ];
µÇ¼ºó¸´ÖÆ
ÒýÈë·ÓÉÖÐÐļþ£ºÔÚroutes/web.phpÎļþÖнç˵·ÓÉʱ£¬¿ÉÒÔͨ¹ýmiddlewareÒªÁìÀ´ÒýÈëÖ¸¶¨µÄÖÐÐļþ¡£
// routes/web.php use AppHttpMiddlewareMyMiddleware; Route::get('/user', function () { // })->middleware(MyMiddleware::class);
µÇ¼ºó¸´ÖÆ
³ý´ËÖ®Í⣬»¹¿ÉÒÔͨ¹ýÖÐÐļþ×飨Middleware Groups£©µÄ·½·¨ÅúÁ¿ÒýÈë¶àÆäÖÐÐļþ£¬ÒÔ´ËΪ»ù´¡£¬ÎÞаӦÓÃÖÐÐļþ£¬ÔÚ²î±ðµÄ³¡¾°ÏÂʵÏÖ²î±ðµÄ¹¦Ð§¡£
Èý¡¢ÖÐÐļþÖ´ÐÐÁ÷³Ì
ÔÚÇëÇó½øÈëLaravelÓ¦ÓóÌÐòʱ£¬Laravel¿ò¼Üƾ֤ÖÐÐļþµÄÒýÈë˳ÐòŲÓÃÕâЩÖÐÐļþÀ࣬ȻºóÖ´ÐÐËüÃǵÄprocessÒªÁì¡£ÓÉÓÚÖÐÐļþÁ´µÄ×é³É£¬¿ÉÒÔÇáËɵØÔÚÇëÇó±»´¦Àí֮ǰ»òÖ®ºó¾ÙÐвÙ×÷¡£
Laravel¿ò¼ÜµÄÖÐÐļþµ÷ÀíÁ÷³ÌÈçÏ£º
ÇëÇó½øÈëÓ¦Ó㬾ÓÉHttpKernelÖÐÐļþ´¦Àí£¬½¨ÉèÇëÇ󹤾ߣ¨IlluminateHttpRequestʵÀý£©¡£
ŲÓÃÈ«¾ÖÖÐÐļþ£¬ÈôÊÇÓÐ×îÏȵÄÖÐÐļþÐèÒªÖ´ÐУ¬ÔòÖ´ÐиÃÖÐÐļþµÄprocessÒªÁì¡£
½Ó×ÅŲÓ÷ÓÉÖÐÐļþ£¬ÈôÊÇÓÐ×îÏȵÄÖÐÐļþÐèÒªÖ´ÐУ¬ÔòÖ´ÐиÃÖÐÐļþµÄprocessÒªÁì¡£
ÇëÇó×îÖÕµÖ´ï·Óɱհüº¯Êý»ò¿ØÖÆÆ÷ÒªÁ죬Íê³ÉÏêϸµÄÓªÒµÂß¼´¦Àí¡£
¾ÓÉ·ÓÉÖÐÐļþµÄprocessÒªÁì·µ»Øµ½HttpKernelÖÐÐļþ£¬°´Ïà·´µÄ˳ÐòŲÓ÷ÓÉÖÐÐļþºÍÈ«¾ÖÖÐÐļþµÄterminateÒªÁì¡£
×îÖÕÌìÉúHTTPÏìÓ¦£¬·µ»Ø¸øä¯ÀÀÆ÷¡£
Laravel¿ò¼ÜµÄÖÐÐļþÊÇÒ»¸öºÜÊÇÓÐÓõĹ¦Ð§£¬¿ÉÒÔÇáËɵØÔÚÇëÇó´¦ÀíÀú³ÌÖÐÖ´ÐÐijЩ´úÂë»ò¼ì²âÇëÇ󣬴ӶøΪӦÓóÌÐòÔöÌíÁËÎÞаÐÔºÍÇå¾²ÐÔ¡£Í¨¹ý¶ÔLaravelÖÐÐļþµÄÏÈÈݺÍʵÏÖÔÀíµÄÏàʶ£¬¿ª·¢Õß¿ÉÒÔ¸üÉîÈëµØÃ÷È·ºÍÓ¦ÓÃÖÐÐļþµÄ×÷Óá£
ÒÔÉϾÍÊÇlaravelÖÐÐļþµÄʵÏÖÀú³ÌµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡