#15 Middleware (restricting access to pages)

Middleware는 말 그대로 중간에서 일을 처리하는 것을 의미한다.

Middleware를 이용하여 로그인 접근제한을 만들어보자.

우선 Middleware를 만들어보자. 터미널로 들어가서 다음과 같은 명령어를 입력한다.

php artisan make:middleware AuthenticatedMiddleware

그 다음 app/Http/Middleware를 확인하면 방금 생성된 AuthenticatedMiddleware.php를 확인할 수 있다.

로그인이 안되어있는 상태이면 로그인페이지로 리다이렉트를 시켜야 하므로 다음과 같은 코드를 작성한다.

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class AuthenticatedMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check()) {
            return $next($request);
        }
        //리다이렉션
        return redirect('/login');
    }
}

하지만 이걸로 끝난게 아니다. 실제로 Kernel단에서도 똑같은 미들웨어 처리를 하도록 우리가 선언을 해줘야 된다. Http/kernel.php로 접근을 하여 다음과 같은 코드를 작성한다.

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        //추가된 코드
        'authenticated' => \App\Http\Middleware\AuthenticatedMiddleware::class,
    ];

이렇게 하면authenticated라는 미들웨어를 사용할 수 있게 된다. 그러면 마지막으로 web.php에서 접근권한을 해당 뷰에 씌워보자.

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', 'PagesController@index');
/*미들웨어*/
Route::get('users','UsersController@index')->middleware('authenticated');
Route::get('users/create', ['uses' => 'UsersController@create']);
Route::post('users', ['uses' => 'UsersController@store']);

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
/*미들웨어*/
Route::get('blade','PagesController@blade')->middleware('authenticated');

/*Practice*/
Route::get('test','TestController@index');

미들웨어가 생겼다. 이제 그냥 /users/blade로 접근을 할려면 로그인을 해야된다.

results matching ""

    No results matching ""