Laravel ベーシック認証をかけるには?

ショコラ
ショコラ

Laravel ベーシック認証をかけるには?

.htaccess ではなくミドルウェアでベーシック認証を制御します。

もっさん先輩
もっさん先輩
  1. ミドルウェアを作成します。
./artisan make:middleware BasicAuthMiddleware
  1. app/Http/Middleware/BasicAuthMiddleware.php を変更します。

(変更前)

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class BasicAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        return $next($request);
    }
}

(変更後)

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class BasicAuthMiddleware
{
  public function handle(Request $request, Closure $next)
  {
    if ('mossan' == $request->getUser() && '123456' ==$request->getPassword()) {
      return $next($request);
    }
    abort(401,'Enter username and password.',[
      header('WWW-Authenticate: Basic realm="Access to staging site"'),
      header('Content-Type: text/plain; charset=utf-8')
    ]);
  }
}
  1. app/Http/Kernel.php にベーシック認証ミドルウェアを追加する。
protected $routeMiddleware = [
  :
  'basicauth' => \App\Http\Middleware\BasicAuthMiddleware::class,
];
  1. routes/web.php でベーシック認証ミドルウェア(basicauth)を適用させる。
Route::group(['middleware'=>'basicauth'],function() {
  :
});

以上

Scroll to Top