Tìm kiếm bài viết

Laravel 6 có gì mới? (Phần 2)

13.08.2020

0/5 (0 Reviews)

Laravel 6 có gì mới, ước tính sẽ mất khoảng một giờ để nâng cấp từ 5,8 lên 6,0. Dự án của bạn có thể có các dependencies

    Upgrading to 6.0

    Laravel 6 có gì mới, ước tính sẽ mất khoảng một giờ để nâng cấp từ 5,8 lên 6,0. Dự án của bạn có thể có các dependencies và các external package có thể tăng thêm thời gian đó, vì vậy hãy ghi nhớ điều đó khi bạn quyết định upgrade.

    How to upgrade to Laravel 6.0

    Trong file composer.json, thay đổi Laravel framework dependency từ 5.8.* thành ^6.0. Nếu bạn đang dùng phiên bản trước 5,8, bạn nên trước khi chuyển sang 6.0.

    // In composer.json
    "laravel/framework": "^6.0",
    

    Sau đó bạn chạy terminal command:

    composer update
    

     

    Laravel Shift

    Một cách tuyệt vời khác để quản lý các bản upgrades của bạn, đặc biệt đối với các ứng dụng lớn hơn, là sử dụng . Shift là một tool tự động sẽ upgrade cho bạn.

    It works like this:

    • Cấp cho Shift quyền truy cập Laravel repository của bạn
    • Chọn phiên bản Laravel mà bạn muốn upgrade
    • Shift tạo một branch mới và sửa đổi những gì cần thay đổi trong code của bạn
    • Shift tạo một pull request để bạn có thể kiểm tra và quyết định xem có nên merge không

    Quá trình này rất đơn giản và là một lựa chọn tuyệt vời nếu chỉ đơn giản là thay đổi package version trong composer.json không phù hợp với bạn. Dịch vụ này không miễn phí, nhưng phí một lần rất thấp.

     

    Bạn có thể tìm cấu trúc upgrade cho 6.0

     

    Do I need to Upgrade?

    Laravel 6.0 là phiên bản Long Term Support release muộn nhất, có nghĩa là bug fix sẽ được đảm bảo trong hai năm và security fix trong ba năm. Bản phát hành LTS trước đó với những đảm bảo này là Laravel 5.5.

    Bảng này từ website của Laravel phác thảo lịch trình hỗ trợ hiện tại:

    Với các bản sửa lỗi cho bản phát hành LTS trước đó sẽ kết thúc sớm, có thể đáng để nâng cấp lên 6.0 để bạn biết rằng dự án của bạn sẽ được hỗ trợ thêm vài năm nữa.

    Aside: Securing Laravel APIs with Auth0

    Việc bảo mật Laravel API bằng Auth0 rất dễ dàng và mang lại rất nhiều tính năng tuyệt. Với Auth0, chúng ta chỉ phải viết một vài dòng code để nhận:

    • A solid , include
    • Support for
    • Our

    Sign Up for Auth0

    Bạn sẽ cần một tài khoản để quản lý authentication. Bạn có thể đăng ký một . Tiếp theo, cài đặt một Auth0 API.

    Set Up an API

    Chuyển đến trong Auth0 dashboard của bạn và nhấp vào nút "Create API". Nhập tên cho API. Đặt Identifier thành một URL (URL tồn tại hoặc không tồn tại). Signing Algorithm phải là RS256.

    Create API on Auth0 dashboard

    Bây giờ chúng ta đã sẵn sàng để implement Auth0 authentication trên Laravel backend API của chúng ta.

    Dependencies and Setup

    Cài đặt package laravel-auth0 qua composer như sau:

    composer require auth0/login:"~5.0"
    

    Tạo configl file cho package laravel-auth0 như sau:

    php artisan vendor:publish
    

    Sau khi file được tạo, nó sẽ được đặt tại config/laravel-auth0.php. Chắc chắn rằng bạn thay thế các giá trị placeholder bằng các giá trị xác thực từ Auth0 Admin Dashboard. Kiểm tra kỹ giá trị của bạn với .

    File .env của bạn nên có các giá trị AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRETAUTH0_CALLBACK_URL như sau:

    AUTH0_DOMAIN=lptech.auth0.com
    AUTH0_CLIENT_ID=xxxxxxxxxxxxxxxxxx
    AUTH0_CLIENT_SECRET=xxxxxxxxxxxxxxxxx
    AUTH0_AUDIENCE=http://api.lptech.asia
    AUTH0_CALLBACK_URL=null

    Activate Provider and Facade

    Package laravel-auth0 đi kèm với một provider có tên là LoginServiceProvider. Thêm phần này vào danh sách các nhà providers của ứng dụng.

    // config/app.php
    'providers' => array(
        // ...
        \Auth0\Login\LoginServiceProvider::class,
    );
    

    Nếu bạn muốn sử dụng Auth0 Facade, thêm nó vào danh sách aliases.

    // config/app.php
    'aliases' => array(
        // ...
        'Auth0' => \Auth0\Login\Facade\Auth0::class,
    );
    

    Thông tin người dùng có thể được truy cập bằng gọi Auth0::getUser(). Cuối cùng, bạn cần liên kết một class cung cấp người dùng (người dùng mô hình ứng dụng của bạn) mỗi khi người dùng đăng nhập hoặc access_token được decode. Bạn có thể sử dụng Auth0UserRepository được cung cấp bởi package này hoặc bạn có thể xây dựng class của riêng mình.

    Để sử dụng Auth0UserRepository, thêm các dòng sau vào AppServiceProvidder của bạn:

    // app/Providers/AppServiceProvider.php
    public function register()
    {
        $this->app->bind(
          \Auth0\Login\Contract\Auth0UserRepository::class, 
          \Auth0\Login\Repository\Auth0UserRepository::class
        );
    }
    

    Configure Authentication Driver

    Package laravel-auth0 đi kèm với một authentication driver được gọi là auth0. Driver này xác định cấu trúc user bao bọc user profile được chuẩn hóa được xác định bởi Auth0. Nó không thực sự tồn tại object mà chỉ đơn giản là lưu trữ nó trong session cho các lần gọi trong tương lai.

    Điều này là đủ cho basic testing hoặc nếu bạn không có yêu cầu để duy trì user. Tại bất kỳ nơi nào, bạn có thể gọi Auth::check () để xác định xem có user nào đã đăng nhập và Auth::user() để truy xuất thông tin user.

    Config driver trong config/auth.php để sử dụng auth0.

    // app/config/auth.php
    // ...
    'providers' => [
        'users' => [
            'driver' => 'auth0'
        ],
    ],
    

    Secure API Routes

    API routes của bạn được định nghĩa trong routes/api.php cho các ứng dụng Laravel 5.3+.

    // routes/api.php
    
    <?php
    
    use Illuminate\Http\Request;
    
    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register API routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | is assigned the "api" middleware group. Enjoy building your API!
    |
    */
    
    Route::get('/public', function (Request $request) {
      return response()->json(["message" => "Hello from a public endpoint! You don't need any token to access this URL..Yaaaay!"]);
    });
    
    Route::get('/wakanda', function (Request $request) {
      return response()->json(["message" => "Access token is valid. Welcome to this private endpoint. You need elevated scopes to access Vibranium."]);
    })->middleware('auth:api');
    

    Bây giờ, bạn có thể gửi request đến enpoint được bảo vệ của bạn trong đó bao gồm access_token.

    curl --request GET \
      --url http://localhost:8000/api/wakanda \
      --header 'authorization: Bearer <ACCESS TOKEN>'
    

    Mỗi khi người dùng chạm vào api/wakanda endpoint, một JWT access_token hợp lệ sẽ được yêu cầu trước khi resource được release. Với điều này, các private routes sẽ được bảo vệ.

    More Resources

    Đó là nó! Chúng ta có một authenticated Laravel API với các routes bảo vệ. Để tìm hiểu thêm, hãy xem các resource sau:

    Recap

    Laravel đã mang lại rất nhiều sự hứng thú cho thế giới PHP và thật tuyệt khi thấy Framework và các sản phẩm đi kèm tiếp tục được cải thiện.

    Với việc giới thiệu phiên bản semantic, bạn có thể upgrade giữa các phiên bản chính mà không phải lo lắng về những thay đổi lớn. Sự thay đổi này nhiều hơn là chỉ phiên bản, nó cho thấy rằng sau tất cả các cải tiến xuất hiện trong 5.x, framework hiện đang ở một điểm ổn định trong tương lai!

    Ngoài phiên bản semantic, 6.0 còn mang đến những cải tiến về tốc độ khi truy cập các collection, bổ sung cho các lựa chọn subquery Eloquent, giới thiệu job middleware, ...

    hiện đã có, vì vậy hãy xem nếu bạn muốn biết thêm thông tin về bản phát hành mới!

    Và nếu bạn quan tâm đến việc thêm authentication vào ứng dụng Laravel 6.0 của mình, Auth0 cung cấp một có thể được tích hợp trong vài phút.

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    thumbnail

    Kubernetes bài 2 - Mạng lưới k8s và luồng Traffic ở Packet Level

    22.05.2026

    Pod không chỉ là một container: Rất nhiều người nhầm lẫn Pod 1-1 với Container. Thực chất, Pod là đơn vị triển khai nhỏ nhất, có thể chứa một hoặc nhiều container

    Mục lục bài viết