>  기사  >  PHP 프레임워크  >  Laravel 5를 사용하여 로그인 등록 기능을 구현하는 방법

Laravel 5를 사용하여 로그인 등록 기능을 구현하는 방법

PHPz
PHPz원래의
2023-04-21 10:06:24636검색

Laravel은 PHP 언어 기반의 오픈 소스 웹 프레임워크이며 점점 더 많은 개발자가 사용하고 있습니다. Laravel 프레임워크에는 뷰, 라우팅, 데이터베이스 작업 등과 같은 유용한 내장 기능이 많이 내장되어 있으며 확장도 지원합니다. 이 글에서는 Laravel 5를 사용하여 로그인 및 등록 기능을 구현하는 방법을 소개합니다.

  1. Laravel 설치

먼저 시스템에 Laravel을 설치해야 합니다. 설치방법은 라라벨 공식문서를 참고하시거나 직접 검색해보시면 됩니다.

  1. 데이터베이스 생성

로그인 및 등록 기능을 사용하려면 사용자 정보를 저장하기 위해 데이터베이스를 사용해야 합니다. 이 작업을 수행하기 전에 "laravel_login"이라는 데이터베이스를 생성해야 합니다. 명령줄에 다음 명령을 입력할 수 있습니다.

mysql -u username -p
CREATE DATABASE laravel_login;

여기서 "username"은 MySQL 사용자 이름입니다. 그러면 "laravel_login"이라는 빈 데이터베이스가 생성됩니다.

  1. Create User Table

Laravel 5에서는 마이그레이션을 통해 데이터베이스 테이블을 생성하고 관리합니다. 먼저 마이그레이션 파일을 생성해야 합니다. 명령줄에

php artisan make:migration create_users_table

를 입력합니다. 이 명령은 기본적으로 "databasemigrations" 폴더에 저장되는 마이그레이션 파일을 생성합니다.

이 마이그레이션 파일을 편집하고 "up()" 메서드에서 사용자 테이블의 필드를 정의합니다.

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

그런 다음 다음 명령을 입력하여 이 마이그레이션을 실행하고 사용자 테이블을 생성합니다.

php artisan migrate
  1. 컨트롤러 및 뷰 생성

다음으로 등록 및 로그인 페이지를 표시하고 사용자가 입력한 정보를 처리하기 위한 컨트롤러와 뷰를 만듭니다. 명령줄에

php artisan make:controller AuthController

를 입력합니다. 이 명령은 기본적으로 "appHttpControllers" 폴더에 저장되는 "AuthController"라는 컨트롤러를 생성합니다.

컨트롤러 코드는 다음과 같습니다.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AuthController extends Controller
{
    public function showLoginForm()
    {
        return view(&#39;auth.login&#39;);
    }

    public function login(Request $request)
    {
        // 登陆逻辑
    }

    public function showRegistrationForm()
    {
        return view(&#39;auth.register&#39;);
    }

    public function register(Request $request)
    {
        // 注册逻辑
    }

    public function logout(Request $request)
    {
        // 注销逻辑
    }
}

그런 다음 양식을 렌더링하기 위한 뷰 템플릿을 만들어야 합니다. "resourcesviewsauth" 폴더에 각각 로그인 및 등록 페이지 템플릿인 "login.blade.php" 및 "register.blade.php"라는 파일을 생성합니다.

템플릿 코드는 다음과 같습니다.

로그인 템플릿:

@extends(&#39;layouts.app&#39;)

@section(&#39;content&#39;)
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">Login</div>
                    <div class="panel-body">
                        <form class="form-horizontal" method="POST" action="{{ route(&#39;login&#39;) }}">
                            {{ csrf_field() }}

                            <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                                <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                                <div class="col-md-6">
                                    <input id="email" type="email" class="form-control" name="email" value="{{ old(&#39;email&#39;) }}" required autofocus>

                                    @if ($errors->has('email'))
                                        <span class="help-block">
                                            <strong>{{ $errors->first('email') }}</strong>
                                        </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                                <label for="password" class="col-md-4 control-label">Password</label>

                                <div class="col-md-6">
                                    <input id="password" type="password" class="form-control" name="password" required>

                                    @if ($errors->has('password'))
                                        <span class="help-block">
                                            <strong>{{ $errors->first('password') }}</strong>
                                        </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="remember" {{ old(&#39;remember&#39;) ? &#39;checked&#39; : &#39;&#39; }}> Remember Me
                                        </label>
                                    </div>
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-8 col-md-offset-4">
                                    <button type="submit" class="btn btn-primary">
                                        Login
                                    </button>

                                    <a class="btn btn-link" href="{{ route(&#39;password.request&#39;) }}">
                                        Forgot Your Password?
                                    </a>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection

등록 템플릿:

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">Register</div>
                    <div class="panel-body">
                        <form class="form-horizontal" method="POST" action="{{ route(&#39;register&#39;) }}">
                            {{ csrf_field() }}

                            <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                                <label for="name" class="col-md-4 control-label">Name</label>

                                <div class="col-md-6">
                                    <input id="name" type="text" class="form-control" name="name" value="{{ old(&#39;name&#39;) }}" required autofocus>

                                    @if ($errors->has('name'))
                                        <span class="help-block">
                                            <strong>{{ $errors->first('name') }}</strong>
                                        </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                                <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                                <div class="col-md-6">
                                    <input id="email" type="email" class="form-control" name="email" value="{{ old(&#39;email&#39;) }}" required>

                                    @if ($errors->has('email'))
                                        <span class="help-block">
                                            <strong>{{ $errors->first('email') }}</strong>
                                        </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                                <label for="password" class="col-md-4 control-label">Password</label>

                                <div class="col-md-6">
                                    <input id="password" type="password" class="form-control" name="password" required>

                                    @if ($errors->has('password'))
                                        <span class="help-block">
                                            <strong>{{ $errors->first('password') }}</strong>
                                        </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group">
                                <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>

                                <div class="col-md-6">
                                    <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <button type="submit" class="btn btn-primary">
                                        Register
                                    </button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection
  1. 라우팅 완료

마지막 단계는 라라벨이 컨트롤러와 뷰를 올바르게 호출할 수 있도록 라우팅을 설정하는 것입니다. "routesweb.php" 파일에 다음 코드를 추가하세요:

Route::get('login', 'AuthController@showLoginForm')->name('login');
Route::post('login', 'AuthController@login');
Route::get('register', 'AuthController@showRegistrationForm')->name('register');
Route::post('register', 'AuthController@register');
Route::post('logout', 'AuthController@logout')->name('logout');

이제 다음 주소를 방문하여 등록 및 로그인 페이지를 볼 수 있습니다:

http://yourdomain.com/register
http://yourdomain.com/login

및 다음 주소를 방문하여 로그인 및 로그아웃 작업을 완료하세요:

http://yourdomain.com/login
http://yourdomain.com/logout
  1. 결론

이번 튜토리얼을 통해 Laravel 5에서 로그인 및 등록 기능을 구현하는 방법을 배웠습니다. 물론 이것은 가장 기본적인 구현일 뿐입니다. 운영, 보안 등 측면에서는 아직 주의해야 할 사항이 많아 실제 개발에서도 지속적으로 학습하고 개선해야 할 사항입니다.

위 내용은 Laravel 5를 사용하여 로그인 등록 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.