250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- PM2
- 회고
- 발행
- pagination
- Laravel
- 라라벨
- jquery
- node
- React
- 배포
- exceljs
- miniconda
- CSS
- NextJS
- polygon
- 공연티켓
- netfunnel
- nodejs
- git
- Ai
- 블록체인
- metamask
- Python
- Kaikas
- nginx
- threejs
- nft
- Setting
- Remix
- chatGPT
Archives
- Today
- Total
박주니 개발 정리
라라벨 회원 인증 기본편 본문
728x90
반응형
laravel 새로운 프로젝트를 만든다면 회원가입이나 로그인 controller 및 해당 DB가 셋팅되어있는 것을 볼 수 있습니다.
라라벨에서 제공해주는 것이기 때문에 새로 만드는 것보다 그것을 활용하는 것에 초점을 두었습니다.
1. web.php에서 Auth.routes()가 있는 지 확인하시고 없다면 추가해주시길 바랍니다.
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| 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('/', function () {
return view('./dashboard/homepage');
});
Route::get('/users', [App\Http\Controllers\UserController::class, 'index']);
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
- Auth.routes()을 하게 되면 vendor\laravel\framework\src\illuminate\Auth 을 route와 연결해서 사용할 수 있는 것으로 이해했습니다. 이부분에 정확한 개념은 추후에 확인할 예정입니다.
2. 적용하고자하는 Controller에 가서 __construct() middeware 연결되어 있는 지 확인하고 없다면 추가해주시길 바랍니다.
public function __construct()
{
$this->middleware('auth');
}
이해 참고▶
- 먼저 다시 한번 어디 controller로 이동해야하는 지 모르겠다면 현재 저는 /home에 들어갔을 때 그 페이지에 회원인증을 거칠려고 하기 때문에 web.php를 보면 위치가 HomeController이 되어있는 것을 확인할 수 있을 것입니다. 그래서 그 위치로 이동을 했습니다.
- Route::get을 보면 index class를 진행할려고하는데 __construct 클래스 부터 실행된 것은 Auth::routes()을 연결할 때부터 먼저 __contruct() 클래스부터 실행하겠다는 의미입니다.
- __construct 클래스가 다 실행되면 route::get에서 요청한 클래스로 이동해서 진행을 합니다.
3. 클래스에 지정한 view로 이동합니다. 저는 기본으로 만들었던 home.blade.php로 이동했습니다.
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Dashboard</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
You are logged in!
</div>
</div>
</div>
</div>
</div>
@endsection
이해 참고▶
- 현재 제가 보여주는 페이지는 처음에 라라벨 프로젝트를 만들면 기본적으로 제공해주는 페이지입니다. html을 새로 만드는 것보다 현재 @extends 와 @section 활용 이해하시는 게 좋기 때문에 만약 없으시다면 이 페이지를 복붙해서 경로를 맞춰주시면 되겠습니다. 아니면 extends에 있는 html을 한페이지에다가 복붙하시면 될 것입니다.
4. extends에 지정된 layouts.app으로 이동하십시오. 위치는 resources\views\layouts 폴더안에 있습니다.
이해 참고▶
- 이 위치로 이동한 이유는 login 여부에 따라 페이지 이동 제한이 layouts.app에 있습니다.
5. @guest가 있는 지 확인하고 안에 직접 기본 라라벨 프로젝트를 열어서 확인해보시면 이해하시는데 도움이 될 것입니다.
@guest
@if (Route::has('login'))
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@endif
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
@else
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->name }}
</a>
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
@csrf
</form>
</div>
</li>
@endguest
이해 참고▶
- @guest~@else~@endguest로 되어있는 것을 볼 수 있는데 @guest~@else는 login이 안되었을 때 header에 login register 버튼이 생성이 돼고 @else~@endquest는 login 되었을 때 보이는 logout할 수 있는 버튼이 생성됩니다. 추가적으로 login을 하지 않고 해당 url로 바로 접속할려고 할 때 login page로 이동하게 됩니다.
포인트▶
- 회원인증을 이용하고자할 때 기존에 새로운 라라벨 프로젝트를 만들었다면 app.blade.php를 extend해서 form을 만드시고 controller에다가 2번 설명에 내용을 추가하면 회원인증 기본은 될 것입니다. 응용하고자 한다면 마찬가지로 controller와 app.blade.php에서 수정하시면 될 것입니다. 저도 좀 더 응용 및 이해가 된 부분이 있으면 추가 설명을 업데이트할 예정입니다.
728x90
반응형
Comments