IMG-LOGO
공지사항 :

PHP Laravel 프레임워크를 이용한 간단한 로그인 페이지

lmkfox - 2025-05-11 07:37:42 32 Views 0 Comment

✅ 전제 조건

  • Laravel 10.x 이상 설치 (또는 9.x도 가능)

  • Composer, PHP 8.x 이상

  • MySQL 혹은 SQLite 등 DB 설정 완료


✅ 1. 새 Laravel 프로젝트 생성

composer create-project laravel/laravel loginApp
cd loginApp


✅ 2. 데이터베이스 설정

.env 파일 수정

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=login_app
DB_USERNAME=root
DB_PASSWORD=비밀번호

DB 생성 후 마이그레이션:

php artisan migrate


✅ 3. 사용자 테이블에 예제 사용자 추가 (Seeder 사용)

php artisan tinker
use App\Models\User;
use Illuminate\Support\Facades\Hash;

User::create([
    'name' => 'admin',
    'email' => 'admin@example.com',
    'password' => Hash::make('1234')
]);


✅ 4. 로그인 라우트 설정

routes/web.php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;

Route::get('/', fn() => redirect('/login'));

Route::get('/login', [AuthController::class, 'showLogin'])->name('login');
Route::post('/login', [AuthController::class, 'login']);
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
Route::get('/dashboard', [AuthController::class, 'dashboard'])->middleware('auth');


✅ 5. 컨트롤러 생성

php artisan make:controller AuthController

app/Http/Controllers/AuthController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    public function showLogin()
    {
        return view('login');
    }

    public function login(Request $request)
    {
        $credentials = $request->only('email', 'password');

        if (Auth::attempt($credentials)) {
            return redirect()->intended('/dashboard');
        }

        return back()->withErrors([
            'login' => '이메일 또는 비밀번호가 올바르지 않습니다.',
        ]);
    }

    public function dashboard()
    {
        return view('dashboard');
    }

    public function logout()
    {
        Auth::logout();
        return redirect('/login');
    }
}


✅ 6. 뷰 파일 생성

resources/views/login.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>로그인</title>
</head>
<body>
    <h2>로그인</h2>

    @if ($errors->any())
        <div style="color: red;">
            {{ $errors->first('login') }}
        </div>
    @endif

    <form method="POST" action="/login">
        @csrf
        <label>이메일</label>
        <input type="email" name="email" required><br><br>
        <label>비밀번호</label>
        <input type="password" name="password" required><br><br>
        <button type="submit">로그인</button>
    </form>
</body>
</html>

resources/views/dashboard.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>대시보드</title>
</head>
<body>
    <h2>{{ auth()->user()->name }}님, 환영합니다.</h2>

    <form method="POST" action="{{ route('logout') }}">
        @csrf
        <button type="submit">로그아웃</button>
    </form>
</body>
</html>


✅ 7. 미들웨어 세션 설정

세션 유지와 인증 처리를 위해 web 미들웨어는 기본 적용되어 있으며, /dashboard에는 추가로 auth 미들웨어를 사용했습니다. 이 설정은 RouteServiceProvider에서 관리됩니다.


 보안 팁

  • 비밀번호는 Hash::make()로 암호화해야 하며, 로그인 시 Auth::attempt() 사용

  • 로그인 시 brute-force 방지를 위한 로그인 시도 제한 (ThrottleRequests 미들웨어)도 고려

  • 프로덕션 환경에서는 HTTPS 적용 권장


댓글