Người dùng nào là php?

PHP là ngôn ngữ kịch bản máy chủ và là công cụ mạnh mẽ để tạo các trang Web động và tương tác

PHP là một giải pháp thay thế được sử dụng rộng rãi, miễn phí và hiệu quả cho các đối thủ cạnh tranh như ASP của Microsoft

Bắt đầu học PHP ngay bây giờ »

Học dễ dàng với "PHP Tryit"

Với trình chỉnh sửa "PHP Tryit" trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã PHP và nhấp vào nút để xem kết quả

Ví dụ



echo "Tập lệnh PHP đầu tiên của tôi. ";
?>


Tự mình thử »

Nhấp vào nút "Tự dùng thử" để xem nó hoạt động như thế nào


Bài tập PHP

Kiểm tra bản thân với các bài tập

Tập thể dục

Chèn phần còn thiếu của mã bên dưới để xuất "Xin chào thế giới"


Cung cấp câu trả lời "



Ví dụ PHP

Tìm hiểu bằng các ví dụ. Hướng dẫn này bổ sung tất cả các giải thích với các ví dụ rõ ràng

Xem tất cả các ví dụ về PHP


Bài kiểm tra PHP

Học bằng cách làm bài kiểm tra. Bài kiểm tra này sẽ cung cấp cho bạn tín hiệu về mức độ bạn biết hoặc không biết về PHP

Bắt đầu bài kiểm tra PHP


Việc học của tôi

Theo dõi tiến trình của bạn với chương trình "Học tập của tôi" miễn phí tại W3Schools

Đăng nhập vào tài khoản của bạn và bắt đầu kiếm điểm

Đây là một tính năng tùy chọn. Bạn có thể học W3Schools mà không cần sử dụng My Learning

Người dùng nào là php?


Tài liệu tham khảo PHP

Tài liệu tham khảo PHP của W3Schools chứa các danh mục khác nhau của tất cả các hàm, từ khóa và hằng số PHP, cùng với các ví dụ

ahihi đồ ngốc nghếch thanh hùng nè

Nội dung chính Hiển thị

  • Cài đặt
  • 1. gói cài đặt
  • 2. nhà cung cấp cấu hình và bí danh
  • 3. create file config to jwt active
  • 4. Tạo khóa bí mật
  • 5. sửa lại người dùng mô hình để nhập cái id người dùng vào yêu cầu
  • 6. lưu ý cấu hình tệp tin thông tin
  • Tạo đơn giản mã thông báo
  • Tạo mã thông báo dự kiến ​​cho người dùng
  • Tạo mã thông báo dự kiến ​​trên một đối tượng
  • khiếu nại - ghi thêm dữ liệu vào mã thông báo
  • Tạo token từ 1 đối tượng bất kỳ
  • Xác thực
  • ngoại lệ toàn cầu

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

anh hùng đẹp trai

Người dùng nào là php?

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

tôi thích như vậy

Và JWT token cũng thế, ở khuôn khổ bài này mình không nói jwt là gì. Mình chỉ hướng dẫn các bạn cách nhúng jwt vào laravel cho api

anh hùng thông minh lắm

anh hùng đẹp trai

anh hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Cài đặt

read data support

read data support

tôi thích như vậy

anh hùng thông minh lắm

1. gói cài đặt

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

read data support

anh hùng đẹp trai

tôi thích như vậy

tôi thích như vậy

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Run command through composer.  

anh hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng đẹp trai

composer require tymon/jwt-auth

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng ebudezain

anh hùng đẹp trai

2. nhà cung cấp cấu hình và bí danh

read data support

tôi thích như vậy

read data support

anh hùng ebudezain

read data support

anh hùng đẹp trai

anh hùng thông minh lắm

anh hùng ebudezain

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng ebudezain

Sau khi cài đặt gói hoàn tất, bạn cần thêm nhà cung cấp dịch vụ vào mảng nhà cung cấp trong tệp cấu hình ứng dụng. php .

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,

anh hùng đẹp trai

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory'::class,

tôi thích như vậy

3. create file config to jwt active

tôi thích như vậy

Sau cùng bạn cần xuất bản cấu hình của jwt ( kiểu như nó tạo cái file config vào hệ thống laravel )

read data support

tôi thích như vậy

read data support

read data support

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

anh hùng thông minh lắm

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng đẹp trai

anh hùng thông minh lắm

4. Tạo khóa bí mật

anh hùng thông minh lắm

read data support

read data support

anh hùng ebudezain

anh hùng thông minh lắm

anh hùng thông minh lắm

Theo lý thuyết jwt ngẫu nhiên muốn tạo ra 1 mã thông báo bạn cần cung cấp 1 khóa bí mật
tạo khóa bí mật trong laravel khá dễ dàng.

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

ahihi đồ ngốc nghếch thanh hùng nè

Nếu bạn sử dụng jwt để xác thực việc trao đổi thông tin giữa 2 máy chủ
thì 2 khóa của 2 máy chủ phải giống nhau thì mới có thể giải mã được.

Vì vậy, bạn có thể tạo 1 khóa bất kỳ bên máy chủ này và sao chép cho máy chủ kia.

read data support

anh hùng ebudezain

tôi thích như vậy

anh hùng ebudezain

anh hùng đẹp trai

anh hùng ebudezain

bài hướng dẫn giải mã jwt của php laravel trong nodejs

ahihi đồ ngốc nghếch thanh hùng nè

5. sửa lại người dùng mô hình để nhập cái id người dùng vào yêu cầu

anh hùng đẹp trai

anh hùng ebudezain

ahihi đồ ngốc nghếch thanh hùng nè

read data support

anh hùng ebudezain

anh hùng ebudezain

read data support

anh hùng đẹp trai

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

bạn cần triển khai cái giao diện tên JWTSubject và thực thi 2 phương thức getJWTIdentifier, getJWTCustomClaims mục tiêu là để khi tạo token thì jwt của bạn được gắn chặt với 1 vái giá trị là id của người dùng. Sau đó khi giải mã thì ta được 1 đối tượng người dùng tương ứng

read data support

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

namespace App\Models;

/// .. 
use Tymon\JWTAuth\Contracts\JWTSubject;

class User extends Authenticatable implements JWTSubject
{
    use HasFactory, Notifiable;

     /**
     * @return int
     */
    public function getJWTIdentifier() {
        
        return $this->getKey();
    }
    
    /**
     * @return array
     */
    public function getJWTCustomClaims() {
        return [
            "iss" => "http://localhost",
            "ahihi" => "đồ ngốc CustomClaims"
        ];
    }
    //// .... 
}

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

read data support

Hướng dẫn user token php

read data support

tôi thích như vậy

6. lưu ý cấu hình tệp tin thông tin

ahihi đồ ngốc nghếch thanh hùng nè

tôi thích như vậy

Chìa khóa bí mật - bí mật

tôi thích như vậy

read data support

tôi thích như vậy

anh hùng ebudezain

anh hùng đẹp trai

anh hùng ebudezain

anh hùng ebudezain

Cái tên nói lên tất cả 😄 Mục 4 mình vừa trình bày là cái key này, khi bạn muốn 2 server giải mã qua lại thì 2 server phải có key giống nhau.
Mặc định tải trong env cái biến JWT_SECRET không thì nó lấy đại

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng thông minh lắm

anh hùng ebudezain

anh hùng đẹp trai

'bí mật' => env('JWT_SECRET', 'hung-dep-trai'),

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

JWT thời gian để sống - ttl

read data support

anh hùng ebudezain

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

anh hùng ebudezain

anh hùng thông minh lắm

anh hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

1 token tạo ra phải có thời gian sống (tính bằng phút). Khuyến nghị hủy bỏ.  

tôi thích như vậy

read data support

anh hùng đẹp trai

read data support

tôi thích như vậy

Làm mới thời gian để sống - refresh_ttl

tôi thích như vậy

anh hùng ebudezain

anh hùng đẹp trai

Đây là khoảng thời gian (tính bằng phút) bạn có thể tạo một mã thông báo mới khác từ mã thông báo cũ mà không cần xác nhận lại.  

tôi thích như vậy

'refresh_ttl' => 20160, // 2 tuần

ahihi đồ ngốc nghếch thanh hùng nè

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Tạo đơn giản mã thông báo

ahihi đồ ngốc nghếch thanh hùng nè

Tạo mã thông báo dự kiến ​​cho người dùng

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

anh hùng đẹp trai

anh hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

ahihi đồ ngốc nghếch thanh hùng nè

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng thông minh lắm

anh hùng ebudezain

class LoginCotnroller in api directory as after.  

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

anh hùng thông minh lắm

only('email', 'password');

        try {
            // xác nhận thông tin người dùng gửi lên có hợp lệ hay không
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()
                    ->error(
                        'có lỗi validate trong controller', 
                        ['error' => 'invalid_credentials'],
                        Response::HTTP_UNAUTHORIZED
                    )
                    ->setStatusCode(Response::HTTP_UNAUTHORIZED);
            }
        } catch (JWTException $e) {
            // Xử lý ngoại lệ 
            return response()
                    ->error(
                        'có lỗi validate trong controller', 
                        ['error' => 'could_not_create_token'],
                        Response::HTTP_INTERNAL_SERVER_ERROR
                    )
                    ->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
        }

        return response()
                    ->success('Your custom login', $token)
                    ->setStatusCode(Response::HTTP_OK);
    }

    /**
     * Nếu bạn sử dụng function login ở trên nhìn thấy phức tạp hay thấy gớm, khó hiểu quá thì dùng function dưới này nhìn dễ hiểu hơn 1 tí :D
     */
    public function simpleLogin(Request $request){
        // lấy thông tin từ các request gửi lên
        $credentials = $request->only('email', 'password');

        try {
            // xác nhận thông tin người dùng gửi lên có hợp lệ hay không
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json(['error' => 'invalid_credentials'], 401);
            }
        } catch (JWTException $e) {
            // Xử lý ngoại lệ 
            return response()->json(['error' => 'could_not_create_token'], 500);
        }

        // xác nhận thành công thì trả về 1 token hợp lệ
        return response()->json(compact('token'));
    }
}

 

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

Tạo mã thông báo dự kiến ​​trên một đối tượng

anh hùng thông minh lắm

anh hùng đẹp trai

tôi thích như vậy

anh hùng thông minh lắm

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

Đằng phương pháp thông thường, 
chúng ta còn có thể tạo mã thông báo dựa trên một phiên bản người dùng như sau.

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng thông minh lắm

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

$user = User::where('email', '')->first();
if(!$user){
    return response()->json(['error' => 'user_not_found'], 500);
}

$token = JWTAuth::fromUser($user);

tôi thích như vậy

read data support

anh hùng đẹp trai

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

khiếu nại - ghi thêm dữ liệu vào mã thông báo

anh hùng đẹp trai

anh hùng thông minh lắm

$customClaims = ['foo' => 'bar', 'baz' => 'bob'];

// JWTAuth::attempt($credentials, $customClaims); -> phương thức để login
// or
JWTAuth::fromUser($user, $customClaims);

tôi thích như vậy

anh hùng đẹp trai

ahihi đồ ngốc nghếch thanh hùng nè

anh hùng đẹp trai

tôi thích như vậy

anh hùng ebudezain

Đương nhiên, những dữ liệu bạn ghi thêm vào sẽ có mặt giống với những dữ liệu khác khi giải mã token

tôi thích như vậy

ahihi đồ ngốc nghếch thanh hùng nè

read data support

bài viết được viết bởi cường tráng hùng https. //ebudezain. com/

anh hùng ebudezain

tôi thích như vậy

tôi thích như vậy

Lưu ý. Hết sức chú ý những dữ liệu bạn ghi thêm vào mã thông báo vì chúng sẽ làm tăng độ dài cũng như dung lượng của mã thông báo