>  기사  >  PHP 프레임워크  >  laravel은 로그인 등록을 구현합니다.

laravel은 로그인 등록을 구현합니다.

WBOY
WBOY원래의
2023-05-20 21:10:10892검색

Laravel은 웹 애플리케이션을 보다 쉽게 ​​구축할 수 있는 강력한 개발 환경을 제공하는 인기 있는 PHP 프레임워크입니다. 중요한 기능 중 하나는 라라벨 자체 인증 시스템으로, 로그인 및 회원가입을 포함한 사용자 인증을 빠르게 구현할 수 있습니다. 이번 글에서는 Laravel을 사용하여 로그인 등록을 구현하는 방법을 보여드리겠습니다.

배포 환경
인증 구현을 시작하기 전에 Laravel 환경이 구성되어 있고 데이터베이스 연결이 구성되어 있는지 확인해야 합니다. 아직 Laravel을 설치하지 않으셨다면 공식 문서에 있는 설치 가이드를 참고하세요. Laravel 애플리케이션에서는 Artisan 명령줄 도구를 사용하여 필요한 파일과 디렉터리 구조를 생성합니다. 명령줄에서 다음 명령을 사용하여 새로운 Laravel 애플리케이션을 생성할 수 있습니다:

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

생성 후 애플리케이션의 루트 디렉터리로 이동하여 다음 명령을 실행합니다. 애플리케이션 프로그램 키를 생성하려면:

php artisan key:generate

경로 등록
Laravel에서 라우팅은 URI와 해당 컨트롤러 메서드를 연결하는 브리지입니다. 인증 경로를 등록하려면 Routes/web.php 파일을 업데이트해야 합니다. 이 파일에서는 로그인 및 등록 경로를 포함하는 애플리케이션의 경로를 정의합니다.

먼저 POST 요청을 /register로 보내는 경로를 정의하고 이를 RegisterController의 Register() 메서드에 바인딩해야 합니다. 그러면 사용자가 사용자 이름과 비밀번호를 입력할 수 있는 등록 양식이 렌더링됩니다.

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

다음으로 POST 요청을 /login으로 보내는 경로를 정의하고 이를 /login에 바인딩해야 합니다. LoginController의 login() 메소드. 그러면 사용자가 로그인 이름과 비밀번호를 입력할 수 있는 로그인 양식이 렌더링됩니다. 사용자에게 인증할 수 있는 유효한 자격 증명이 없는 경우 애플리케이션은 로그인 양식으로 리디렉션됩니다.

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

마지막으로 모든 보호된 경로를 정의해야 합니다. Laravel에서는 auth 미들웨어를 사용하여 사용자가 인증되었는지 확인할 수 있습니다. 이 미들웨어는 인증되지 않은 사용자를 /login 경로로 자동 리디렉션합니다.

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

// your protected routes go here

});

컨트롤러 처리
필요한 경로를 정의했으며 이제 컨트롤러에서 이를 처리해야 합니다. Laravel에서 컨트롤러는 특정 HTTP 요청을 처리하는 클래스이며 컨트롤러의 메서드는 HTTP 응답을 반환합니다. 애플리케이션에서는 등록 및 로그인 요청을 처리하기 위해 두 개의 컨트롤러를 생성해야 합니다.

app/Http/Controllers/Auth 디렉터리에 LoginController.php와 RegisterController.php라는 두 개의 파일을 만듭니다. 이 두 파일은 Laravel과 함께 제공되는 컨트롤러 클래스입니다. 이러한 컨트롤러에서는 로그인 및 등록 요청에 대한 사용자 정의 기능을 제공하기 위해 Laravel의 기본 메소드를 재정의해야 합니다.

Login Controller
먼저 LoginController.php 컨트롤러를 살펴보겠습니다. 이 컨트롤러에는 showLoginForm() 및 login()이라는 두 가지 메서드가 포함되어 있습니다.

showLoginForm() 메서드는 사용자가 로그인 이름과 비밀번호를 입력할 수 있는 양식이 포함된 로그인 양식 보기(resources/views/auth/login.blade.php)를 반환합니다. 이 방법은 Laravel에서 제공됩니다.

공용 함수 showLoginForm()
{

return view('auth.login');

}

login() 메소드는 로그인 로직이 실제로 구현되는 곳입니다. 이 메소드는 IlluminateHttpRequest 인스턴스를 수신하고 인스턴스의 verify() 메소드를 사용하여 사용자 입력의 유효성을 검사합니다. 양식 유효성 검사가 성공하면 Laravel은 자동으로 주어진 로그인 및 비밀번호를 사용하여 사용자를 검색하여 애플리케이션에 로그인합니다.

공개 함수 로그인($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'));

}

try() 메소드는 제공된 자격 증명을 기반으로 비밀번호가 올바른지 자동으로 확인합니다. 비밀번호가 올바르지 않으면 false가 반환됩니다.

사용자가 성공적으로 인증되었고 이전에 요청한 URL이 저장되면(일반적으로 인증 미들웨어에 의해 차단된 URL) Laravel 도우미 함수inted()를 사용하여 해당 URL로 리디렉션할 수 있습니다. 저장된 URL이 없으면 프런트엔드 대시보드(/dashboard)로 리디렉션하세요.

Register Controller
다음으로 RegisterController.php 컨트롤러를 살펴보겠습니다. 라라벨의 기본 메소드에 추가로, Register() 메소드도 구현해야 합니다.

register() 메소드는 login() 메소드와 매우 유사합니다. IlluminateHttpRequest 인스턴스를 수신하고 인스턴스의 verify() 메소드를 사용하여 사용자 입력의 유효성을 검사합니다. 양식 유효성 검사가 성공하면 Laravel은 새 사용자를 생성하고 이를 데이터베이스에 저장합니다. 그런 다음 Laravel의 기본 동작을 사용하여 사용자를 애플리케이션에 로그인할 수 있습니다.

공용 함수 등록($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');

}

등록 컨트롤러에서 해시 보조 기능을 사용하여 비밀번호를 암호화할 수 있습니다. 비밀번호 확인이 성공하면 새 사용자를 생성하고 해당 사용자를 애플리케이션에 로그인합니다.

View Layer
이제 필요한 경로와 컨트롤러를 정의했으므로 인증 뷰를 생성해야 합니다.

在 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.