Laravel 5.2 新機能シリーズ -- マルチユーザー認証機能の詳細な実装
Laravel 5.2 では、マルチユーザー認証のサポートが追加され、異なるデータテーブルユーザー (フロントエンドユーザーとバックエンドユーザーなど) が同時にログインして認証できるようになります。次に、マルチユーザーのログインと登録機能の実装について簡単に紹介します。
1. 認証スキャフォールディングを生成します
まず、Laravel 5.2 が提供する認証スキャフォールディングを使用して初期化作業を完了します:
php artisan make:auth
The Artisanコマンドは、ユーザー認証に必要なルート、ビュー、および HomeController を生成します:
ルーティング ファイル Routes.php を表示すると、ファイルが更新されていることがわかります:
Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/home', 'HomeController@index');});
このうち Route ::auth() は登録ログインルートを定義しており、/home は認証通過後のジャンプルートとなっています。
2. フロントエンド ユーザー ログインを実装します
次に、最初にフロントエンド ユーザー ログインを実装します。これは、Laravel に付属する User ユーザー ログインです。上記のスキャフォールディングを通じて、認証に必要なすべてのコードが生成されました。あとは、移行コマンドを使用してユーザー認証関連のテーブルを作成するだけです。
php artisan migrate
コマンドが実行された後、 users テーブルとpassword_resets テーブルが生成され、それぞれユーザー マスター テーブルとパスワード リセット テーブルが生成されます。
次に、ブラウザに http://laravel.app/register と入力して新しいユーザーを登録します。
登録が成功した後、 test という名前のユーザーを作成します。 http://laravel.app/home と入力すると、ログインしていることがわかります:
3. 認証構成ファイルを編集します
マルチユーザー認証を実装するには、まず認証構成ファイル auth.php を構成する必要があります。ここで実装する機能はフロントエンドとバックエンドのユーザー ログインであるため、対応する構成は次のとおりです:
<?phpreturn [ 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], ],];
認証はガードとプロバイダーで構成されているため (ユーザー認証ドキュメントを参照)、これら 2 つの設定項目にそれぞれ admin および admins オプションを追加しました。
4. バックグラウンド ユーザー モデルを作成します
次に、バックグラウンド ユーザー ログインを実装します。まず、次の Artisan コマンドを使用してバックグラウンド ユーザー モデルを生成します。
php artisan make:model Admin --migration
Schema::create('admins', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password', 60); $table->rememberToken(); $table->timestamps();});
php artisan migrate
<?phpnamespace App;use Illuminate\Foundation\Auth\User as Authenticatable;class Admin extends Authenticatable{ /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = [ 'password', 'remember_token', ];}
5. バックグラウンド ユーザー認証ルートとコントローラー を定義します。
次に、バックグラウンド ユーザー認証ルートを定義します。routes.php コードを次のように変更します。
Route::group(['middleware' => ['web']], function () { Route::auth(); Route::get('home', 'HomeController@index'); Route::get('admin/login', 'Admin\AuthController@getLogin'); Route::post('admin/login', 'Admin\AuthController@postLogin'); Route::get('admin/register', 'Admin\AuthController@getRegister'); Route::post('admin/register', 'Admin\AuthController@postRegister'); Route::get('admin', 'AdminController@index');});
php artisan make:controller Admin/AuthControllerphp artisan make:controller AdminController
<?phpnamespace 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 = '/admin'; protected $guard = 'admin'; protected $loginView = 'admin.login'; protected $registerView = 'admin.register'; public function __construct() { $this->middleware('guest:admin', ['except' => 'logout']); } protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:admins', 'password' => 'required|confirmed|min:6', ]); } protected function create(array $data) { return Admin::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); }}
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;use Auth;class AdminController extends Controller{ public function __construct() { $this->middleware('auth:admin'); } public function index() { $admin = Auth::guard('admin')->user(); return $admin->name; }}
6. ファイルの作成と変更を表示します
最後に、バックグラウンド ユーザー認証に対応するビュー ファイルを作成する必要があります。ここでは、フロントエンド ユーザー ビュー テンプレートをコピーして少し変更します。
cp -r resources/views/auth resources/views/admin
/login -> /admin/login/register -> /admin/register
7 、バックグラウンド ユーザー認証を実現
http://laravel.app/admin/ にアクセスしてください。ブラウザに登録すると、登録ページも表示されます:
1 つ登録する ユーザー名 admin のユーザーが登録に成功すると、ページは http://laravel.app にジャンプします/admin、認証が成功したことを示します。
これで表ユーザーと裏ユーザーの同時ログイン認証機能が完成しました。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHPには4つの主要なエラータイプがあります。1。notice:わずかなものは、未定義の変数へのアクセスなど、プログラムを中断しません。 2。警告:通知よりも深刻で、ファイルを含むなど、プログラムを終了しません。 3。ファタラー:最も深刻なのは、機能を呼び出すなど、プログラムを終了します。 4。ParseError:構文エラーは、エンドタグの追加を忘れるなど、プログラムの実行を防ぎます。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

矢印関数はPhp7.4で導入され、短い閉鎖の単純化された形式です。 1)=>演算子を使用して定義され、機能を省略し、キーワードを使用します。 2)矢印関数は、キーワードを使用せずに現在のスコープ変数を自動的にキャプチャします。 3)コールバック関数と短い計算でしばしば使用され、コードのシンプルさと読みやすさを改善します。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。
