ThinkPHP6의 프론트엔드 미들웨어와 백엔드 미들웨어의 차이점은 무엇입니까?

王雪芹
풀어 주다: 2020-05-06 17:09:11
원래의
3446명이 탐색했습니다.

마지막 예에서는 미들웨어를 정의하고 미들웨어의 의미를 이해했습니다. 그런 다음 매뉴얼을 훑어보며 "프리 미들웨어"와 "포스트 미들웨어"라는 또 다른 것을 찾았습니다. 둘 사이의 차이점은 무엇입니까?

1. 정의의 차이.

공식 홈페이지 매뉴얼을 보면 pre-middleware와 post-middleware의 정의가 다르다는 것을 어렵지 않게 찾아보실 수 있습니다.

미들웨어 전 정의:

<?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;
    }
}
로그인 후 복사

자세히 살펴보면 최종 분석에서 두 가지가 정의될 ​​때 실행 코드의 순서와 $next($request)의 문제라는 것을 알 수 있습니다. , 바로 이 시퀀스가 ​​프리미들웨어와 포스트미들웨어의 핵심입니다.

2.$요청이 다릅니다.

pre-middleware와 post-middleware에서 각각 다음 코드를 인쇄할 수 있습니다.

halt($request);
로그인 후 복사

주의 깊게 비교한 결과 pre-middleware의 컨트롤러와 메서드는 비어 있지만 post-middleware는 컨트롤러 이름 및 방법. 따라서 현재 액세스된 컨트롤러와 메서드를 얻으려면 이를 해결하기 위해 포스트 미들웨어를 사용해야 합니다.

ThinkPHP6의 프론트엔드 미들웨어와 백엔드 미들웨어의 차이점은 무엇입니까?ThinkPHP6의 프론트엔드 미들웨어와 백엔드 미들웨어의 차이점은 무엇입니까?

3. 미들웨어가 로그인 시나리오를 가로챕니다.

먼저 공식 웹사이트의 미들웨어 정의를 살펴보겠습니다.

미들웨어는 주로 애플리케이션의 HTTP 요청을 가로채거나 필터링하고 필요한 비즈니스 처리를 수행하는 데 사용됩니다.

공식 홈페이지의 정의를 보면 친구들은 로그인 차단을 위해 미들웨어를 사용하는 것이 정말 최선이라고 생각할 수도 있습니다. 하지만 사전 미들웨어를 사용해야 할까요, 아니면 사후 미들웨어를 사용해야 할까요?

<?php
namespace app\middleware;
class After
{
    public function handle($request, \Closure $next)
    {
        $response = $next($request);
        // 添加中间件执行代码
        if(empty(&#39;session&#39;)){
            echo &#39;登录不合法&#39;;
            //跳转到登录页面
        }
        return $response;
    }
}
로그인 후 복사

백엔드 홈 페이지:

public function index(){
    echo &#39;后台首页&#39;;
}
로그인 후 복사

실행 결과에 따르면 로그인 점프 전에 인덱스 메서드를 계속 실행할 수 있고 콘텐츠를 출력할 수 있습니다.

따라서 로그인 시나리오에서는 포스트 미들웨어를 사용할 수 없습니다. 이때, 현재 액세스가 로그인인지 여부도 확인해야 합니다. 그러니 친구 여러분, 이 일을 잘 처리해야 합니다.

위는 사전 및 사후 미들웨어에 대한 관련 소개입니다. 실제 프로젝트에서는 실제 비즈니스 로직을 기반으로 사전 또는 사후 미들웨어를 사용할지 여부를 결정합니다.

위 내용은 ThinkPHP6의 프론트엔드 미들웨어와 백엔드 미들웨어의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿