>  기사  >  PHP 프레임워크  >  [참고 구성] laravel HTTP 미들웨어 도입 및 생성

[참고 구성] laravel HTTP 미들웨어 도입 및 생성

演明
演明원래의
2021-09-13 17:13:171345검색

다음은 참고용으로 PHP 중국어 홈페이지에서 영상을 시청하면서 정리한 메모입니다. 다음은 기본 지식에 익숙하지 않은 경우 살펴 볼 수 있습니다. 제가 공유한 마지막 기사는 laravel 설치에 관한 것이었습니다. 더 많은 기사를 보고 싶으시다면 저를 팔로우해 주세요.

미들웨어는 실제로 경로에 필터링 또는 보호 계층을 추가합니다. 접두사와 네임스페이스는 그룹의 배열 매개변수로 전달되고 미들웨어도 그룹의 배열 매개변수로 전달됩니다.

1. writing

미들웨어를 추가하기 전

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

웹 미들웨어를 추가한 후

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

웹 미들웨어는 세션 기능을 사용하여 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';
});
});

시스템의 기본 웹 미들웨어인 미들웨어는 Kernel.php에 있습니다

웹 미들웨어를 사용하세요 세션은 다음 경우에만 사용됩니다.

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;
   }
}

미들웨어에 세션을 출력하여 테스트해 보겠습니다.

그런 다음 미들웨어에서 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);     
               
    }
}

확인:

먼저 로그인한 후 Welcome 페이지를 방문합니다. 1이 출력되면 설정에 성공한 것입니다(로그인 시 세션에 1을 저장한 후 Welcome 페이지로 들어가십시오. 환영 페이지는 미들웨어의 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);     
               
    }
}

위의 단계는 제가 작성한 학습 노트입니다. 또는 작동해야 할 핵심 사항을 이해하지 못하는 경우 메시지를 남길 수 있습니다. 귀하의 지원에 감사드립니다. 더 많은 정보를 보고 싶으시면 저를 팔로우하시고 다음 기사에서 계속 공유해 주세요.

위 내용은 [참고 구성] laravel HTTP 미들웨어 도입 및 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.