[Laravel 5.4] http(80)요청을 https(443)로 Redirect 시키는 방법

[Laravel 5.4] http(80)요청을 https(443)로 Redirect 시키는 방법

미들웨어 생성

아래 명령어를 실행하면 app/http/Middleware/ 경로에 ForceSSL.php 파일이 생성됩니다.

php artisan make:middleware ForceSSL

생성된 파일을 열어서 handle 함수에 http를 https로 redirect하는 코드를 작성하시면 됩니다.

저 같은 경우에는 APP_ENV 변수가 prod나 production일 경우에만 http 체크를 하도록 했지만 모든 환경에서 적용하기를 원하시면 해당 조건을 제거하시기 바랍니다.

namespace App\Http\Middleware; use Closure; class ForceSSL { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (!$request->secure() && (env('APP_ENV') === 'prod' || env('APP_ENV') === 'production')) { return redirect()->secure($request->getRequestUri()); } return $next($request); } }

커널 등록

생성한 미들웨어를 커널에 등록해주어야 사용할 수 있습니다.

app/Http/Kernel.php 파일을 열어서 $routeMiddleware 배열에 위에서 생성한 미들웨어를 추가합니다.

namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { ...생략 protected $routeMiddleware = [ ...생략 'forcessl' => \App\Http\Middleware\ForceSSL::class ]; }

사용하기

모든 페이지에서 SSL을 사용해도 상관없지만 보통 로그인 페이지나 패스워드가 포함되어 있는 페이지에서 사용하겠죠?

로그인 페이지에 등록하기

로그아웃 같은 경우에는 예외 처리 하지 않으면 http 페이지에서 로그아웃 할 때 에러가 발생합니다.

namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use GuzzleHttp\Client; class LoginController extends Controller { ...생략 public function __construct() { ...생략 $this->middleware('forcessl', ['except' => 'logout']); } ...생략

라우터에서 사용하기

...생략 Route::get('admin/profile', function () { // })->middleware('forcessl'); ...생략

from http://webinformation.tistory.com/105 by ccl(A) rewrite - 2020-03-06 19:55:13

댓글

이 블로그의 인기 게시물

[PHP] 라라벨 루멘 DB문서 자동화

laravel-2 blade layout

laravel-1 라우트 & 뷰