LARAVEL

[Laravel] Authentication(로그인, 로그아웃, 사용자 인증)

보겸삼촌 2020. 2. 23. 23:14

# 개발환경

os: windows10 pro 64bit

php : v7.4.2

node : v10.16.0

laravel : v6.16.0

mysql : v5.7.28

 

0. 사전준비

# 사전준비

0.1. mysql 설치

0.2. db 스키마 생성 (testdb)

 

 

0. 디렉토리 구조

 

1. /root/.env 수정

  1.1. 본인이 만든 mysql 스키마 정보를 입력

 

2. [teminal] php artisan make:auth

  2.1. laravel 버전이 6이상이면 다음과 같은 내용이 출력

  2.2. 6버전 이상이면, 다음 명령어들을 통해서 수행

  2.3. [terminal] composer require laravel/ui

 

  2.4. [terminal] php artisan ui vue --auth

   2.4.1. [terminal] npm install

   2.4.2. [terminal] npm run development

 

  2.5. [terminal] php artisan migrate

 

     2.5.1. 위 실행을 다 하고 나면, db 스키마에 테이블도 생성됨

 

  2.6. 확인

      /root/resources/views 디렉토리에 auth, layout 디렉토리와 아래 파일들이 생성됨을 확인

      /root/app/Http/Controllers 디렉토리에 Auth 디렉토리, HomeController 등 생성됨을 확인

 

 

3. [terminal] php artisan serve

 

   로그인, 회원가입 시스템 확인

 

 

부속) 회원가입 후 리다이렉션 라우팅 수정 시

/*
*  /root/app/Http/Controllers/Auth/RegisterController.php
*/


...

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;
    
    //이 부분 경로를 수정해주면 됨

...

 

부속) /root/resources/views/auth/welcome.blade.php

      보면 로그인 했을 때의 상태 확인, 어떻게 처리 할 것인지에 대한 내용이 추가되어있음을 확인할 수 있음

 

/*
* root/resources/views/auth/welcome.blade.php
*/


...

    <body>
        <div class="flex-center position-ref full-height">
        
        	<!-- 이 부분에 추가됨, 로그인 상태이면 /home, 아니면 login 링크 버튼 출력-->
            @if (Route::has('login'))
                <div class="top-right links">
                    @auth
                        <a href="{{ url('/home') }}">Home</a>
                    @else
                        <a href="{{ route('login') }}">Login</a>

                        @if (Route::has('register'))
                            <a href="{{ route('register') }}">Register</a>
                        @endif
                    @endauth
                </div>
            @endif
...

 

 부속)

/root/routes/web.php

Route::get('/home', 'HomeController@index')->name('home');

이 추가되었고, /home route 경로는 /views/home.blade.php를 출력하며

/root/app/Http/Controllers/HomeController.php에 확인해보면 페이지 생성 시 construct() 부분에 middleware로 auth가 설정되어 있는데, 이 부분 때문에 home.blade.php에서는 auth가 되어있는 사용자만 접근할 수 있도록 함

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('home');
    }
}
​

 

 

 

 

[참고] https://laravel.com/docs/6.x/authentication

[참고] https://stackoverflow.com/questions/34545641/php-artisan-makeauth-command-is-not-defined

'LARAVEL' 카테고리의 다른 글

[LARAVEL] 디렉토리 구조  (0) 2020.02.25
[LARAVEL] Eloquent 개념  (0) 2020.02.25
[Laravel] 버전 확인  (0) 2020.02.23
[Laravel] Routing  (0) 2020.02.23
[laravel] 설치  (0) 2020.02.23