ホームページ PHPフレームワーク Laravel laravelはログイン登録を実装します

laravelはログイン登録を実装します

May 20, 2023 pm 09:10 PM

Laravel は、Web アプリケーションをより簡単に構築できる強力な開発環境を提供する人気の PHP フレームワークです。重要な機能の 1 つは、Laravel 独自の認証システムです。これにより、ログインや登録などのユーザー認証を迅速に実装できます。この記事では、Laravelを使用してログイン登録を実装する方法を説明します。

デプロイ環境
認証の実装を開始する前に、Laravel 環境が構成され、データベース接続が構成されていることを確認する必要があります。 Laravel をまだインストールしていない場合は、公式ドキュメントのインストールガイドを参照してください。 Laravel アプリケーションでは、Artisan コマンド ライン ツールを使用して必要なファイルとディレクトリ構造を作成します。コマンドラインから、次のコマンドを使用して新しい Laravel アプリケーションを作成できます:

composer create-project --prefer-dist laravel/laravel blog

作成後、アプリケーションの In に移動します。ルート ディレクトリで、次のコマンドを実行してアプリケーション キーを生成します。

php 職人キー:生成

ルートを登録
Laravel では、ルーティングは URI と対応するコントローラー メソッドを接続するブリッジです。認証ルートを登録するには、routes/web.php ファイルを更新する必要があります。このファイルでは、ログイン ルートと登録ルートを含む、アプリケーションのルートを定義します。

まず、POST リクエストを /register に送信するルートを定義し、それを RegisterController の register() メソッドにバインドする必要があります。これにより、ユーザーがユーザー名とパスワードを入力できる登録フォームが表示されます。

Route::post('/register', 'AuthRegisterController@register')->name('register');

次に、送信する POST リクエストを定義する必要があります/login ルートに追加し、LoginController の login() メソッドにバインドします。これにより、ユーザーがログイン名とパスワードを入力できるログイン フォームが表示されます。ユーザーが認証に必要な有効な資格情報を持っていない場合、アプリケーションはログイン フォームにリダイレクトします。

Route::post('/login', 'AuthLoginController@login')->name('login');

最後に、すべての保護されたルートを定義する必要があります。 Laravel では、認証ミドルウェアを使用して、ユーザーが認証されていることを確認できます。このミドルウェアは、認証されていないユーザーを /login ルートに自動的にリダイレクトします。

Route::middleware(['auth'])->group(function () {

// your protected routes go here
ログイン後にコピー

});

コントローラーの処理
必要なルートが定義されたら、それらをコントローラーで処理する必要があります。 Laravel では、コントローラーは特定の HTTP リクエストを処理するクラスであり、コントローラー内のメソッドは HTTP レスポンスを返します。アプリケーションでは、登録リクエストとログインリクエストを処理するために 2 つのコントローラーを作成する必要があります。

app/Http/Controllers/Auth ディレクトリに、LoginController.php と RegisterController.php の 2 つのファイルを作成します。これら 2 つのファイルは、Laravel に付属するコントローラー クラスです。これらのコントローラーでは、Laravel のデフォルトのメソッドをオーバーライドして、ログインおよび登録リクエストのカスタム機能を提供する必要があります。

ログイン コントローラー
まず、LoginController.php コントローラーを見てみましょう。このコントローラーには、showLoginForm() と login() という 2 つのメソッドが含まれています。

showLoginForm() メソッドは、ログイン フォーム ビュー (resources/views/auth/login.blade.php) を返します。このビューには、ユーザーがログイン名とパスワードを入力できるフォームが含まれています。このメソッドはLaravelによって提供されています。

public function showLoginForm()
{

return view('auth.login');
ログイン後にコピー

}

login() メソッドは、ログイン ロジックが実際に実装される場所です。このメソッドは IlluminateHttpRequest インスタンスを受け取り、インスタンスの validate() メソッドを使用してユーザー入力を検証します。フォームの検証が成功すると、Laravel は指定されたログイン名とパスワードでユーザーを自動的に検索し、アプリケーションにログインします。

public function login(Request $request)
{

$request->validate([
    'email' => 'required|string|email',
    'password' => 'required|string',
    'remember' => 'boolean'
]);

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials, $request->remember)) {
    return redirect()->intended('dashboard');
}

return redirect()->back()->withInput($request->only('email', 'remember'));
ログイン後にコピー

}

attempt() メソッドは、パスワードが正しいかどうかを自動的にチェックすることに注意してください。指定された資格情報。パスワードが間違っている場合は false が返されます。

ユーザーが正常に認証され、以前にリクエストした URL (通常は認証ミドルウェアによってブロックされた URL) が保存されている場合は、Laravel ヘルパー関数 Indeed() を使用してユーザーをその URL にリダイレクトできます。 URL が保存されていない場合は、フロントエンド ダッシュボード (/dashboard) にリダイレクトします。

Register Controller

次に、RegisterController.php コントローラーを見てみましょう。 Laravel のデフォルトのメソッドに加えて、 register() メソッドも実装する必要があります。

register() メソッドは、login() メソッドと非常によく似ています。 IlluminateHttpRequest インスタンスを受け取り、インスタンスの validate() メソッドを使用してユーザー入力を検証します。フォームの検証が成功すると、Laravel は新しいユーザーを作成し、データベースに保存します。その後、Laravel のデフォルトの動作を使用して、ユーザーをアプリケーションにログインさせることができます。


public function register(Request $request)

{

$request->validate([
    'name' => 'required|string|max:255',
    'email' => 'required|string|email|max:255|unique:users',
    'password' => 'required|string|min:6|confirmed',
]);

$user = User::create([
    'name' => $request->name,
    'email' => $request->email,
    'password' => Hash::make($request->password),
]);

Auth::login($user);

return redirect()->intended('dashboard');
ログイン後にコピー

}

登録コントローラーでは、ハッシュ補助関数を使用してパスワードを暗号化できます。パスワードの検証が成功した場合は、新しいユーザーを作成し、アプリケーションにログインします。


ビュー レイヤー

必要なルートとコントローラーを定義したので、認証ビューを作成する必要があります。 ###

在 resources/views/auth 目录中,我们可以创建 login.blade.php 和 register.blade.php 两个视图文件。这些视图包含登录和注册表单,使用了一些 Laravel 帮助程序,可以处理表单验证并显示错误消息。

登录视图
在 login.blade.php 文件中,我们可以使用 Laravel 的 Form 辅助函数创建登录表单。这个函数会自动为表单添加 CSRF 令牌,并为输入字段编写 HTML 标记。

@csrf

<div class="form-group row">
    <label for="email" class="col-sm-4 col-form-label text-md-right">{{ __('Email Address') }}</label>

    <div class="col-md-6">
        <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus>

        @if ($errors->has('email'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('email') }}</strong>
            </span>
        @endif
    </div>
</div>

<div class="form-group row">
    <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

    <div class="col-md-6">
        <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>

        @if ($errors->has('password'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('password') }}</strong>
            </span>
        @endif
    </div>
</div>

<div class="form-group row">
    <div class="col-md-6 offset-md-4">
        <div class="form-check">
            <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>

            <label class="form-check-label" for="remember">
                {{ __('Remember Me') }}
            </label>
        </div>
    </div>
</div>

<div class="form-group row mb-0">
    <div class="col-md-8 offset-md-4">
        <button type="submit" class="btn btn-primary">
            {{ __('Login') }}
        </button>

        @if (Route::has('password.request'))
            <a class="btn btn-link" href="{{ route('password.request') }}">
                {{ __('Forgot Your Password?') }}
            </a>
        @endif
    </div>
</div>
ログイン後にコピー

注意,我们使用了 Blade 模板引擎的 @csrf 和 @if 语句来生成必要的 CSRF 令牌并显示验证错误。

注册视图
在 register.blade.php 文件中,我们可以使用 Laravel 的 Form 帮助器创建注册表单。这个函数自动为表单添加 CSRF 令牌,并为输入字段编写 HTML 标记。

@csrf

<div class="form-group row">
    <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>

    <div class="col-md-6">
        <input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>

        @if ($errors->has('name'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('name') }}</strong>
            </span>
        @endif
    </div>
</div>

<div class="form-group row">
    <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

    <div class="col-md-6">
        <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>

        @if ($errors->has('email'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('email') }}</strong>
            </span>
        @endif
    </div>
</div>

<div class="form-group row">
    <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

    <div class="col-md-6">
        <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>

        @if ($errors->has('password'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('password') }}</strong>
            </span>
        @endif
    </div>
</div>

<div class="form-group row">
    <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>

    <div class="col-md-6">
        <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
    </div>
</div>

<div class="form-group row mb-0">
    <div class="col-md-6 offset-md-4">
        <button type="submit" class="btn btn-primary">
            {{ __('Register') }}
        </button>
    </div>
</div>
ログイン後にコピー

注意,我们使用了 Blade 模板引擎的 @csrf 和 @if 语句来生成必要的 CSRF 令牌并显示验证错误消息。

结论
通过 Laravel 可以快速、方便、安全地实现 Web 应用程序的登录和注册身份验证功能,从而保护您的应用程序免受未授权的访问。在本文中,我们介绍了 Laravel 的身份验证系统并实现了注册和登录。现在,您可以使用这些基础知识构建更完整的用户身份验证系统,或将其集成到您的现有应用程序中。

以上がlaravelはログイン登録を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

どちらが良いのか、DjangoとLaravel? どちらが良いのか、DjangoとLaravel? Mar 28, 2025 am 10:41 AM

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

LaravelとThe BackEnd:Webアプリケーションロジックの電源 LaravelとThe BackEnd:Webアプリケーションロジックの電源 Apr 11, 2025 am 11:29 AM

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

どちらがより良いPHPですか、それともLaravelですか? どちらがより良いPHPですか、それともLaravelですか? Mar 27, 2025 pm 05:31 PM

LaravelはPHPベースのフレームワークであるため、PHPとLaravelは直接匹敵するものではありません。 1.PHPは、シンプルで直接的であるため、小規模プロジェクトや迅速なプロトタイピングに適しています。 2。LARAVELは、豊富な機能とツールを提供するため、大規模なプロジェクトや効率的な開発に適していますが、急な学習曲線があり、純粋なPHPほど良くない場合があります。

Laravelはフロントエンドですか、それともバックエンドですか? Laravelはフロントエンドですか、それともバックエンドですか? Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp、designforwebapplicationdevelopment.itfocusonserver-sidelogic、databasemanagement、およびapplicationStructure、およびbueithedendtechnologiesvue.jsorreactforfull-stackdevelymentと統合されていること。

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

Laravelの汎用性:単純なサイトから複雑なシステムまで Laravelの汎用性:単純なサイトから複雑なシステムまで Apr 13, 2025 am 12:13 AM

Laravel Developmentプロジェクトは、さまざまなサイズと複雑さのニーズに合う柔軟性とパワーのために選択されました。 Laravelは、ルーティングシステム、Eloquentorm、Artisan Command Lineおよびその他の機能を提供し、簡単なブログから複雑なエンタープライズレベルのシステムへの開発をサポートしています。

Laravelを学ぶ方法Laravelを無料で学ぶ方法 Laravelを学ぶ方法Laravelを無料で学ぶ方法 Apr 18, 2025 pm 12:51 PM

Laravelフレームワークを学びたいが、資源や経済的圧力に苦しんでいないのですか?この記事では、Laravelの無料学習を提供し、オンラインプラットフォーム、ドキュメント、コミュニティフォーラムなどのリソースを使用して、PHP開発の旅から習得するための堅実な基盤を築く方法を教えてくれます。

Laravelがそんなに人気があるのはなぜですか? Laravelがそんなに人気があるのはなぜですか? Apr 02, 2025 pm 02:16 PM

Laravelの人気には、単純化された開発プロセスが含まれ、快適な開発環境を提供し、豊富な機能が提供されます。 1)Rubyonrailsの設計哲学を吸収し、PHPの柔軟性を組み合わせています。 2)Eloquentorm、Bladeテンプレートエンジンなどのツールを提供して、開発効率を向上させます。 3)そのMVCアーキテクチャと依存関係噴射メカニズムにより、コードがよりモジュール化され、テスト可能になります。 4)キャッシュシステムやベストプラクティスなどの強力なデバッグツールとパフォーマンス最適化方法を提供します。

See all articles