English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Laravel 5.5内蔵のAuthモジュールを使って前後台のログインを実現する詳細

前書き

本文ではLaravelについて 5.5インストールされたAuthモジュールに基づいて、前後台のログインに関する内容を実現しています。さらにAuthモジュールに関する情報は、この記事を参照してください:https://ja.oldtoolbag.com/article/121401.htm

さらに詳しい紹介は省略します。一緒に詳細を確認してみましょう。

方法は以下の通りです:

手順1:Authを生成

プロジェクトが完了した後、組み込みAuthコンポーネントを生成します:

php artisan make:auth

手順2:guardを追加

config\auth.phpを開いて、前後台ユーザーの切り替えを簡単にするために、プロジェクト全体でUsersテーブルを使用

'guards' => [
 //...
 'admin' => [
  'driver' => 'session',
  'provider' => 'users',
 ],
 //...
 ],

手順3:基底クラスを実装

class AdminController extends BaseController
{
 use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
 public function __construct()
 {
 $this->middleware('auth:admin');
 }
}

手順4:後台ログインコントローラーを実装

appcontrollersAdminLoginController.phpを新規作成

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
 /*
 |--------------------------------------------------------------------------
 | Login Controller
 |--------------------------------------------------------------------------
 |
 | このコントローラーはアプリケーションのためのユーザー認証を処理し、
 | ホームスクリーンにリダイレクトします。このコントローラーは、トレートを使用して
 | あなたのアプリケーションにその機能を便利に提供するために。
 |
 */
 use AuthenticatesUsers;
 /**
 * ログイン後ユーザーをどこにリダイレクトするか。
 *
 * @var string
 */
 protected $redirectTo = '/admin';
 /**
 * 新しいコントローラーインスタンスを作成
 *
 * @return void
 */
 public function __construct()
 {
 $this->middleware('guest:admin')->except('logout');
 }
 /**
 * ログインページを再書き込み
 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 */
 public function showLoginForm()
 {
 return view('backend.login');
 }
 /**
 * 退出メソッドを再書き込み
 * @param Request $request
 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
 */
 public function logout(Request $request)
 {
 $this->guard();->logout();
 $request->session();->flush();
 $request->session();->regenerate();
 return redirect('/admin/login');
 }
 /**
 * guard認証を再書き込み
 * @return mixed
 */
 protected function guard()
 {
 return Auth::guard('admin');
 }
}

手順5:ログイン後のリダイレクトを異なるパスに実装

app\Middleware\RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null)
{
 if (Auth::guard($guard)->check()) {
  $path = $guard ? '/admin' : '/home';
  return redirect($path);
 }
 return $next($request);
}

手順6:認証未通過時のリダイレクトを異なるログインページに実装

app\Exceptions\Handler.php

/**
 * 未認証ユーザーを対応するログインページにリダイレクトする実装を再書き込み
 * @param \Illuminate\Http\Request $request
 * @param AuthenticationException $exception
 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
 */
 protected function unauthenticated($request, AuthenticationException $exception)
 {
 if($request->expectsJson()){
  return response();->json(['message' => $exception->getMessage()], 401);
 }
  return in_array('admin', $exception->guards()) &63; return redirect();->guest('/admin/login') : redirect()->guest('login');
 }
 }

完了

まとめ

これでこの記事のすべての内容が終わりました。この記事の内容が皆様の学習や仕事に参考になることを願っています。何かご不明な点があれば、コメントを残してください。皆様の「呐喊教程」へのサポートに感謝します。

声明:本文の内容はインターネットから提供され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。本サイトは所有権を有しておらず、人工的な編集は行われていません。著作権侵害の疑いがある場合は、メールを送信してください:notice#oldtoolbag.com(メールを送信する際には、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害疑いのコンテンツを削除します。

おすすめ