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

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

WBOY
WBOYオリジナル
2023-05-20 21:10:10957ブラウズ

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 标记。

71085032ff00cb55c43cd8d91e1cd1ac

@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>

f5a47148e367a6035fd7a2faa965022e

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

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

b42125e3aba3ade041a95113cf783d0b

@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>

f5a47148e367a6035fd7a2faa965022e

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

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

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

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