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

제작 환경



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 멀티 인증 설정 방법 사용자와 관리자를 나누어 로그인 【최종회】

소개



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

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

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

LoginController.php 업데이트



app/Http/Controllers/Admin/Auth에서 LoginController.php를 엽니다.


열면 내용을 아래로 수정합니다.

LoginController.php
    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::ADMIN_HOME;

또한 다음을 추가하여 메서드를 덮어씁니다.

LoginController.php
// この記述だけ画面のトップに
use Illuminate\Support\Facades\Auth;

    /**
     * ログインページの表示
     *
     * @return view
     */
    public function showLoginForm()
    {
        return view('admin.auth.login');
    }

    /**
     * guardメソッドの上書き
     *
     * @return \Illuminate\Contracts\Auth\StatefulGuard
     */
    protected function guard()
    {
        return Auth::guard('admin');
    }

미들웨어 수정



app/Http/Middleware에서 Authenticate.php를 엽니다.


열면 내용을 다음과 같이 수정합니다.

Authenticate.php
    /**
     * 認証されていないときにユーザーがリダイレクトされるパスを取得します。
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (!$request->expectsJson()) {
            if ($request->is('admin/*')) {
                return route('admin.login');
            }
            return route('login');
        }
    }

컨트롤러 수정



app/Http/Controllers/Admin에서 AdminHomeController.php를 엽니다.


열면 내용을 아래로 수정.

AdminHomeController.php
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest:admin')->except('logout');
    }

그런 다음 app/Http/Controllers/Admin/Auth에서 RegisterController.php를 엽니다.


열면 내야를 아래에 수정.

RegisterController.php
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest:admin');
    }

미들웨어 수정



app/Http/Middleware에서 RedirectifAuthenticated.php를 엽니다.


열면 내용을 아래로 수정합니다.

RedirectifAuthenticated.php
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard()->check()) {
            return redirect(RouteServiceProvider::HOME);
        }

        if (Auth::guard('admin')->check()) {
            return redirect(RouteServiceProvider::ADMIN_HOME);
        }

        return $next($request);
    }

이번은 이상으로 종료입니다.
기본적인 설정은 여기에서 종료입니다만, 당사의 경우 관리자는 로그인 기능만을 사용해, 신규 등록이나 패스워드를 잊었을 경우의 변경은 홈 페이지상에서는 할 수 없게 합니다.
또한 로그인은 이메일 주소가 아니라 사용자 이름(사용자 ID)으로 할 수 있도록 변경합니다.
다음 번은 그쪽을 게재합니다.

좋은 웹페이지 즐겨찾기