Laravel 6.x/7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【최종회】

제작 환경



Windows 10
Laravel : 6.18.35
Laravel/ui : 1.0
Laravel-mix : 5.0.1
Bootstrap : 4.0.0
MDBootstrap : 4.19.1
chart.js : 2.9.3
XAMPP
PHP : 7.4.3
Visual Studio Code

관련 기사



Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제1회】
Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제2회】
Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제3회】
Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제4회】
Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제5회】
Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제6회】
Laravel 6.x / 7.x 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【제7회】

소개



이 기사는 프로그래밍을 시작한지 ​​얼마 안된 아마추어가, 할 수 있었던 것을 메모하는데 이용하고 있습니다.
내용에 오류가 있을 수 있습니다.

기사를 작성할 때는 다음 사이트를 참고로 하고 있습니다.
이쪽이 상세하므로, 우리 쪽에서 덧붙이고 있는 요건이 불필요하면, 이하를 참고로 하는 것이 좋다고 생각합니다.

길어지기 때문에 여러 번 나누어 기사를 게시합니다.

관리자 측 변경



관리자의 등록이나 변경은, 홈페이지상에서는 할 수 없게 합니다.

라우팅 변경



routes에서 web.php를 엽니다.


열면 다음과 같이 내용을 수정.
관리자 등록·리셋·메일은 불필요하므로 제외합니다.

web.php
Route::prefix('admin')->namespace('Admin')->name('admin.')->group(function () {

    Auth::routes(['register' => false, 'confirm' => false, 'reset' => false, 'verify' => false]);

    Route::get('/home', 'AdminHomeController@index')->name('admin_home');
});

레이아웃 변경



resources/views/layouts에서 app_admin.blade.php를 엽니다.


다음 부분을 아래와 같이 수정합니다.

변경 전



app_admin.blade.php
@if (Route::has('register'))

        {{ __('Register') }}

@endif

변경 후



app_admin.blade.php
@if (Route::has('admin.register'))
    <li class="nav-item">
        <a class="nav-link" href="{{ route('admin.register') }}">{{ __('Register') }}</a>
    </li>
@endif

login.blade.php 수정



관리자 로그인 화면에서는 reset 기능을 사용하지 않으므로 Forgot Your Password? 링크를 표시하지 않도록 합니다.

resources/views/admin/auth에서 login.blade.php를 엽니다.



내용을 다음으로 변경합니다.

login.blade.php
@if (Route::has('admin.password.request'))
    <a class="btn btn-link" href="{{ route('admin.password.request') }}">
        {{ __('Forgot Your Password?') }}
    </a>
@endif

인증 항목 변경



기본적으로 이메일 주소로 인증되어 있으므로 사용자 이름(사용자 ID)으로 인증할 수 있도록 설정을 변경합니다.

컨트롤러 변경



관리자 측과 사용자 측 모두 LoginController.php에 다음 내용을 추가합니다.



LoginController.php
    /**
     * ログイン時に使用するカラムの設定
     *
     * @return string name
     */
    public function username()
    {
        return 'name';
    }

인증시에 사용하는 컬럼을 지정하는 것만으로 변경할 수 있습니다.

LoginController.php
    public function username()
    {
        return 'カラム名';
    }

이상으로 종료입니다.
수고하셨습니다.

tinker를 통한 DB 간이 연결



이 설정에서는 관리자가 홈페이지에서 등록을 할 수 없기 때문에 Tinker를 이용하여 관리자를 등록하고 싶습니다.
CodeCamp 요구사항이 사용자 이름 admin, 암호 admin으로 로그인할 수 있기 때문에 Admins 테이블에 이 정보를 등록하고 싶습니다.

프로젝트 디렉토리에서 터미널을 시작하고 다음을 입력합니다.
php artisan tinker

계속해서
$admin = new Admin();

다음에 등록하는 값을 대입해 갑니다.
$admin->name = 'admin';
$admin->email = 'admin@admin';

암호 해시.
$admin->password = Hash::make('admin');

값을 저장합니다.
$admin->save();

저장 내용 확인.
Admin::all();

tinker 종료
exit 又は Ctrl+c

좋은 웹페이지 즐겨찾기