laravel5.2で表裏のユーザーログインを区別する方法を実現

高洛峰
リリース: 2023-03-04 19:16:01
オリジナル
1338 人が閲覧しました

1. フロントデスクログイン

laravel独自の認証を直接使用します

php artisan make:auth
ログイン後にコピー

その後、ルーティングファイルを表示できます:

Route::group(['middleware' => 'web'], function () {
 Route::auth();
 Route::get('/home', 'HomeController@index');
});
ログイン後にコピー

phpArtisan miteを実行

2つのテーブルが生成されていることがわかります。

2. バックエンドログイン

設定ファイルを編集します

configauth.php

ガードに管理者を追加し、プロバイダーに管理者を追加します

3. データモデルを作成します

phpArtisan make:model Admin - -migrationを実行します


その後、databasemigrations でデータテーブル構造を変更し、user テーブルをコピーします


phpArtisan 移行を実行すると、管理テーブルが生成されることがわかります

4. バックグラウンドルーティングを定義します

ここでは、ルーティンググループを直接定義します

<?php
return [
 &#39;defaults&#39; => [
  &#39;guard&#39; => &#39;web&#39;,
  &#39;passwords&#39; => &#39;users&#39;,
 ],
 &#39;guards&#39; => [
  &#39;web&#39; => [
   &#39;driver&#39; => &#39;session&#39;,
   &#39;provider&#39; => &#39;users&#39;,
  ],
  &#39;admin&#39; => [
   &#39;driver&#39; => &#39;session&#39;,
   &#39;provider&#39; => &#39;admins&#39;,
  ],
  &#39;api&#39; => [
   &#39;driver&#39; => &#39;token&#39;,
   &#39;provider&#39; => &#39;users&#39;,
  ],
 ],
 &#39;providers&#39; => [
  &#39;users&#39; => [
   &#39;driver&#39; => &#39;eloquent&#39;,
   &#39;model&#39; => App\User::class,
  ],
  &#39;admins&#39; => [
   &#39;driver&#39; => &#39;eloquent&#39;,
   &#39;model&#39; => App\Admin::class,
  ],
 ],
 &#39;passwords&#39; => [
  &#39;users&#39; => [
   &#39;provider&#39; => &#39;users&#39;,
   &#39;email&#39; => &#39;auth.emails.password&#39;,
   &#39;table&#39; => &#39;password_resets&#39;,
   &#39;expire&#39; => 60,
  ],
 ],
];
ログイン後にコピー

5. コントローラーの作成

実行

Route::group([&#39;prefix&#39; => &#39;admin&#39; ,&#39;middleware&#39; => &#39;admin&#39;], function () {
 Route::get(&#39;login&#39;, &#39;Admin\AuthController@getLogin&#39;);
 Route::post(&#39;login&#39;, &#39;Admin\AuthController@postLogin&#39;);
 Route::get(&#39;register&#39;, &#39;Admin\AuthController@getRegister&#39;);
 Route::post(&#39;register&#39;, &#39;Admin\AuthController@postRegister&#39;);
 Route::get(&#39;logout&#39;, &#39;Admin\AuthController@logout&#39;);
 Route::get(&#39;/&#39;, &#39;Admin\AdminController@index&#39;);
});
ログイン後にコピー

AuthController.phpは、Auth

php artisan make:controller Admin/AuthController
php artisan make:controller Admin/AdminController
ログイン後にコピー


AdminController .php

rrreで参照できます。ええ

6. ビューを作成します

ここでは、認証内のビューとhome.blade.phpを新しい管理フォルダーに直接コピーします。

ログインと登録のフォームのアクションを変更し、管理者プレフィックスを追加します

レイアウトの app.blade.php を変更します

<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
 use AuthenticatesAndRegistersUsers, ThrottlesLogins;
 protected $redirectTo = &#39;/admin&#39;;
 protected $guard = &#39;admin&#39;;
 protected $loginView = &#39;admin.login&#39;;
 protected $registerView = &#39;admin.register&#39;;
 public function __construct()
 {
  $this->middleware(&#39;guest:admin&#39;, [&#39;except&#39; => &#39;logout&#39;]);
 }
 protected function validator(array $data)
 {
  return Validator::make($data, [
   &#39;name&#39; => &#39;required|max:255&#39;,
   &#39;email&#39; => &#39;required|email|max:255|unique:admins&#39;,
   &#39;password&#39; => &#39;required|confirmed|min:6&#39;,
  ]);
 }
 protected function create(array $data)
 {
  return Admin::create([
   &#39;name&#39; => $data[&#39;name&#39;],
   &#39;email&#39; => $data[&#39;email&#39;],
   &#39;password&#39; => bcrypt($data[&#39;password&#39;]),
  ]);
 }
}
ログイン後にコピー

次に、フロントエンドとバックエンドに別々にログインしてみてください。

7. ページジャンプの問題が発生する可能性があります

この状況に遭遇した場合は、MiddlewareAuthenticate.php

<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
class AdminController extends Controller
{
 public function __construct()
 {
  $this->middleware(&#39;auth:admin&#39;);
 }
 public function index()
 {
  $admin = Auth::guard(&#39;admin&#39;)->user();
  return view(&#39;admin.home&#39;);
 }
}
ログイン後にコピー

上記は、フロントエンドとバックエンドを区別するためにエディターによって導入されたlaravel5.2実装です。ご質問がございましたら、メッセージを残してください。編集者が時間内に返信させていただきます。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。

laravel5.2 の表ユーザーログインと裏ユーザーログインを区別する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート