NTM Solutions

Thứ Sáu, 31 tháng 7, 2026

Bài 22 — Login

Ở bài trước, chúng ta đã cài đặt Laravel Breeze và có thể đăng ký, đăng nhập vào hệ thống.

Tuy nhiên, khi người dùng nhập Email và Password rồi nhấn Login, phía sau Laravel đã thực hiện những công việc gì?

Trong bài này, chúng ta sẽ tìm hiểu quy trình đăng nhập, Session và cách lấy thông tin người dùng đang đăng nhập để sử dụng trong ứng dụng.


Login là gì?

Login (Đăng nhập) là quá trình xác thực người dùng.

Người dùng cung cấp:

  • Email

  • Password

Laravel sẽ kiểm tra thông tin này với dữ liệu trong cơ sở dữ liệu.

Nếu hợp lệ:

  • Tạo Session.

  • Ghi nhớ người dùng.

  • Cho phép truy cập các trang được bảo vệ.

Nếu không hợp lệ:

  • Trả về trang đăng nhập.

  • Hiển thị thông báo lỗi.


Quy trình Login

Người dùng

      │

      ▼

Nhập Email + Password

      │

      ▼

Request

      │

      ▼

Validation

      │

      ▼

Kiểm tra Database

      │

      ▼

Password Hash

      │

      ▼

Đúng?

  │          │

 Có         Không

  │          │

  ▼          ▼

Tạo Session   Báo lỗi

  │

  ▼

Chuyển đến Dashboard

Đây là quy trình xác thực cơ bản trong Laravel.


Form Login

Laravel Breeze đã tạo sẵn Form:

<form method="POST"
      action="{{ route('login') }}">

    @csrf

    <input
        type="email"
        name="email">

    <input
        type="password"
        name="password">

    <button type="submit">

        Đăng nhập

    </button>

</form>

Người dùng không cần tự viết từ đầu.


Validation

Trước khi xác thực, Laravel kiểm tra dữ liệu:

$request->validate([

    'email' =>

        ['required', 'email'],

    'password' =>

        ['required'],

]);

Điều này giúp loại bỏ những dữ liệu không hợp lệ ngay từ đầu.


Kiểm tra tài khoản

Sau khi Validation thành công, Laravel sẽ:

  • Tìm User theo Email.

  • Lấy mật khẩu đã được băm (Hash).

  • So sánh với mật khẩu người dùng nhập.

Nếu khớp:

Đăng nhập thành công

Nếu không:

Email hoặc mật khẩu không đúng.

Laravel không lưu mật khẩu gốc trong cơ sở dữ liệu.


Session

Khi đăng nhập thành công, Laravel tạo một Session.

Session lưu thông tin người dùng trong suốt thời gian họ sử dụng ứng dụng.

Ví dụ:

Người dùng

↓

Login

↓

Session

↓

Truy cập các trang bảo vệ

Khi đóng phiên làm việc hoặc đăng xuất, Session sẽ bị hủy.


Kiểm tra trạng thái đăng nhập

Laravel cung cấp:

auth()->check()

Ví dụ:

if (auth()->check()) {

    echo 'Đã đăng nhập';

}

Nếu chưa đăng nhập:

echo 'Khách';

Lấy User hiện tại

$user = auth()->user();

Hoặc:

echo auth()->user()->name;

Email:

echo auth()->user()->email;

ID:

echo auth()->id();

Đây là các phương thức được sử dụng rất thường xuyên trong Laravel.


Tạo Post theo User

Ở các bài trước chúng ta dùng:

'user_id' => 1

Bây giờ:

'user_id' => auth()->id()

Ví dụ:

Post::create([

    'title' =>

        $request->title,

    'content' =>

        $request->content,

    'category_id' =>

        $request->category_id,

    'image' =>

        $image ?? null,

    'user_id' =>

        auth()->id(),

]);

Bài viết sẽ thuộc về đúng người đang đăng nhập.


Hiển thị bài viết của tôi

Nhờ Relationship đã học:

$posts = auth()
    ->user()
    ->posts;

Hoặc:

$posts = Post::where(

    'user_id',

    auth()->id()

)->get();

Đây là chức năng phổ biến trong Dashboard cá nhân.


Hiển thị Profile

Giả sử đã tạo quan hệ One To One:

$profile = auth()
    ->user()
    ->profile;

Ví dụ:

echo $profile->phone;

echo $profile->address;

Blade

Laravel hỗ trợ:

@auth

    Xin chào

    {{ auth()->user()->name }}

@endauth

Nếu chưa đăng nhập:

@guest

    <a href="{{ route('login') }}">

        Login

    </a>

@endguest

Nhờ vậy giao diện có thể thay đổi theo trạng thái người dùng.


Đăng xuất

Laravel Breeze đã tạo sẵn chức năng:

<form method="POST"
      action="{{ route('logout') }}">

    @csrf

    <button>

        Logout

    </button>

</form>

Sau khi Logout:

  • Session bị hủy.

  • Người dùng trở về trạng thái khách.


Một số hàm thường dùng

HàmÝ nghĩa
auth()->check()Kiểm tra đã đăng nhập
auth()->user()Lấy User hiện tại
auth()->id()Lấy ID User
@authChỉ hiển thị khi đã đăng nhập
@guestChỉ hiển thị khi chưa đăng nhập

Tổng kết

Trong bài này chúng ta đã học:

  • Quy trình Login.

  • Validation.

  • Session.

  • auth()->check().

  • auth()->user().

  • auth()->id().

  • @auth.

  • @guest.

  • Tạo Post theo người dùng đang đăng nhập.

Đăng nhập là nền tảng để xây dựng các chức năng như Dashboard, quản lý bài viết cá nhân, phân quyền và bảo vệ dữ liệu.


Bài tập

  1. Đăng nhập bằng tài khoản đã tạo ở bài trước.

  2. Hiển thị tên người dùng trên thanh điều hướng.

  3. Thay toàn bộ user_id = 1 bằng auth()->id().

  4. Hiển thị danh sách bài viết của người đang đăng nhập.

  5. Hiển thị thông tin Profile của người dùng.

  6. Thêm nút Logout vào giao diện.

  7. Dùng @auth@guest để thay đổi giao diện theo trạng thái đăng nhập.


Bài tiếp theo

Bài 23, chúng ta sẽ tìm hiểu Register, cách tạo tài khoản mới, kiểm tra dữ liệu đầu vào, lưu người dùng vào cơ sở dữ liệu và mở rộng quy trình đăng ký để tự động tạo Profile hoặc gán Country mặc định sau khi người dùng đăng ký thành công.

x0

quay về MỤC LỤC

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS