Xpressengine3 \ Lightning
XE3(Xpressengine 3) http에서 https로 자동으로 redirect 하기
\config\production\xe.php
파일에 아래에 작성된 코드를 추가합니다.
'ssl' => [
'always' => true,
],
(예시) 코드를 추가된 이후...
<?php
return [
'lang' => [
'locales' => [
'0' => 'ko',
'1' => 'en',
],
],
'ssl' => [
'always' => true,
],
];
내부에 작성된 코드가 어떻게 작동하는지 살펴보겠습니다.
HttpProtocol (위치: \app\Http\Middleware\HttpProtocol.php)클래스에 작성된 코드를 살펴보겠습니다.
HttpProtocol 클래스는 미들웨어 클래스 입니다.
<?php
namespace App\Http\Middleware;
use Closure;
/**
* Class HttpProtocol
*
* @category Middleware
* @package App\Http\Middleware
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
class HttpProtocol
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (app('config')->get('xe.ssl.always') == true && $request->secure() == false) {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
아래 코드를 보면 `xe.ssl.always` 설정이 활성화 되어 있을 때, http에서 https로 자동으로 redirect 시켜 주는 걸 확인할 수 있습니다.
if (app('config')->get('xe.ssl.always') == true && $request->secure() == false) {
return redirect()->secure($request->getRequestUri());
}
HttpProtocol 클래스는 웹(web) 미들웨어 그룹에서 사용되도록 등록되어 있습니다.
아래 부분은 \app\Http\Kernel.php 코드에 작성된 일부입니다.
/** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \App\Http\Middleware\ShareLocalizeSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, // \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \App\Http\Middleware\HttpProtocol::class, \App\Http\Middleware\RequiredDF::class, \App\Http\Middleware\ExceptAppendableVerifyCsrfToken::class, \App\Http\Middleware\LangPreprocessor::class, \App\Http\Middleware\Purifying::class, \App\Http\Middleware\FreezeSEO::class, \App\Http\Middleware\AsyncExpose::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], 'safe' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, // \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \App\Http\Middleware\ExceptAppendableVerifyCsrfToken::class, ] ];
0개 댓글