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

Mẹo về Cấu hình cho laravel 7x là gì? Chi Tiết

Update: 2022-01-15 20:19:06,Quý quý khách Cần tương hỗ về Cấu hình cho laravel 7x là gì?. Bạn trọn vẹn có thể lại Thảo luận ở phía dưới để Ad đc tương hỗ.

760

Trước tiên bắt tay vào tạo hiệu suất cao, toàn bộ chúng ta cần tìm hiểu một vài điểm về Json Web Token (JWT). JWT là một tiêu chuẩn mở (RFC 7519) được định nghĩa phương pháp truyền tài liệu bảo vệ an toàn và uy tín giữa Client Server, những thông tin trong chuỗi JWT được định dạng bằng JSON (access_token). Trong số đó, chuỗi access_token phải có 3 phần là header, phần payload và ở đầu cuối là signature. Mỗi phần được phân cách nhau bởi dấu . có dạng như sau:

Tóm lược đại ý quan trọng trong bài

  • Thích bài này:

header.payload.signature

Header

Phần header sẽ chứa kiểu tài liệu và thuật toán để mã hóa chuỗi

  • typ (type)chỉ ra rằng đối tượng người tiêu dùng là mộtJWT
  • alg (algorithm)xác lập thuật toán mã hóa cho chuỗi làHS256

Payload

Phần payload sẽ chứa thông tin mình yêu thích đặt trong chuỗi token như username, user_id, Nên hạn chế đặt nhiều thông tin trong chuỗi vì sẽ tác động đến độ trễ khi Server xác nhận.

Signature

Phần chữ ký sẽ tiến hành tạo ra bằng phương pháp mã hóa header, payload kèm theo một chuỗisecret (khóa bí mật) và thuật toán được sử dụng để mã hóa header và payload là base64UrlEndcoder.

Bắt đầu

  • Cài đặt ứng dụng laravel

laravel new LoginVuejs

  • Muốn setup vuejs bạn phải setup gói Laravel UI Composer

composer require laravel/ui

  • Sau khi setup xong gói Laravel UI tiếp theo gõ lệnh để setup Vuejs vào dự án bất Động sản khu công trình xây dựng

php artisan ui vue

  • Thêm gói npm

npm i

Cập nhật file .env cùng với cơ sở tài liệu.

Tại thư mục “appProvidersAppServiceProvider” thêm

use IlluminateSupportFacadesSchema;
public function boot()

Schema::defaultStringLength(191);

Tiếp theo gõ lệnh migrate để thao tác cơ sở tài liệu

php artisan migrate

Ta được những bảng như sau:

Cài đặt jwt-auth

Chạy lệnh tại đây để setup phiên bản tiên tiến và phát triển nhất:

composer require tymon/jwt-auth

Sau đó thêm service provider trong mảng array “provider” nằm tại “configapp.php”

‘providers’ =>

TymonJWTAuthProvidersLaravelServiceProvider::class,

‘aliases’ =>

‘JWTAuth’=>TymonJWTAuthFacadesJWTAuth::class,

Chạy lệnh tại đây để thêm gói setup tại configjwt.php

php artisan vendor:publish –provider=”TymonJWTAuthProvidersLaravelServiceProvider”

Thêm khóa cho jwt

php artisan jwt:secret

Khóa sẽ tiến hành update tại file .env như sau JWT_SECRET=foobar

Tại model User.php nằm ở vị trí “appUser.php” ta thêm nội dung như sau:

useTymonJWTAuthContractsJWTSubject;

và tại Class User bổ trợ update thêm implements JWTSubject và hai hàm getJWTIdentifier(), getJWTCustomClaims()

class User extends Authenticatable implements JWTSubject{
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*/
public function getJWTIdentifier()
return $this->getkey();

/**
* Return a key value array, containing any custom claims to be added to the JWT.
*/
public function getJWTCustomClaims()
return [];

Thiết lập Auth Guard

Trong file “config/auth.php” cần tiến hành một vài thay đổi để thông số kỹ thuật kỹ thuật Laravel sử dụng jwt guard để dung cấp xác thực cho ứng dụng.

‘defaults’ => [
‘guard’ => ‘api’,
‘passwords’ => ‘users’,
],

‘guards’ => [
‘api’ => [
‘driver’ => ‘jwt’,
‘provider’ => ‘users’,
],
],

Thêm UserController để gom nhóm những xử lý logic từ những request HTTP vào một trong những class UserController tiến hành hiệu suất cao xác thực đăng nhập.

php artisan make:controller Homecontroller

Thêm vào nội dung sau:

<?php
namespaceAppHttpControllers;
useIlluminateHttpRequest;
useIlluminateSupportFacadesValidator;
useJWTAuth;
useAppUser;
useAuth;
useIlluminateSupportFacadesHash;
classUserControllerextendsController

publicfunction__construct()

$this->middleware(‘auth:api’,[‘except’=>[‘login’]]);

/**
*GettheauthenticatedUser
*
*@returnIlluminateHttpJsonResponse
*/
publicfunctionme()

returnresponse()->json($this->guard()->user());

/**
*Logtheuserout(Invalidatethetoken)
*
*@returnIlluminateHttpJsonResponse
*/
publicfunctionlogout()

$this->guard()->logout();
returnresponse()->json([‘message’=>‘Successfullyloggedout’]);

/**
*Refreshatoken.
*
*@returnIlluminateHttpJsonResponse
*/
publicfunctionrefresh()

returnUsDthis->respondWithToken($this->guard()->refresh());

/**
*GetaJWTtokenviagivencredentials.
*
*@paramIlluminateHttpRequestUsDrequest
*
*@returnIlluminateHttpJsonResponse
*/
publicfunctionlogin(Request$request)
$credentials=$request->only(’email’,’password’);
if($token=$this->guard()->attempt($credentials))
returnUsDthis->respondWithToken($token);

returnresponse()->json([‘error’=>‘Unauthorized’],401);

/**
* Get the token array structure.
* @param string $token
* @return IlluminateHttpJsonResponse
*/
protectedfunctionrespondWithToken($token)

returnresponse()->json([
‘access_token’=>$token,
‘token_type’=>‘bearer’,
‘user’=>$this->guard()->user(),
‘expires_in’=>$this->guard()->factory()->getTTL()*60
]);

/**
* Get the guard to be used during authentication
* @return IlluminateContractsAuthGuard
*/
publicfunctionguard()

returnAuth::guard(‘api’);

Sau đó thêm một vài routes trong “routes/api.php” như sau:

Route::group([‘middleware’=>‘api’,‘prefix’=>‘auth’],function($router)
Route::post(‘login’,'[email protected]’);
Route::post(‘logout’,'[email protected]’);
Route::post(‘refresh’,'[email protected]’);
Route::post(‘me’,'[email protected]’);
);
Route::post(‘register’,'[email protected]’);

Tạo controller Register để tiến hành Đk người tiêu dùng

php artisan make:controller RegisterController

Sau đó nhập vào nội dung như tại đây:

namespaceAppHttpControllers;
useIlluminateHttpRequest;
useIlluminateSupportFacadesValidator;
useAppUser;
useJWTAuth;
useIlluminateSupportFacadesHash;
classRegisterControllerextendsController

publicfunctionregister(Request$request)
string

Tiếp đến sử dụng bộ lọc Middleware để xác nhận đăng nhập người tiêu dùng.

php artisan make:migrate UserAuthMiddleware

Mở file middleware vừa tạo tại thư mục “appMiddlewareUserAuthMiddleware”

<?php
namespaceAppHttpMiddleware;
useAuth;
useClosure;
useJWTAuth;
useException;
useTymonJWTAuthHttpMiddlewareBaseMiddleware;
classUserAuthMiddlewareextendsBaseMiddleware

/**
*Handleanincomingrequest.
*
*@paramIlluminateHttpRequestUsDrequest
*@paramClosureUsDnext
*@returnmixed
*/
publicfunctionhandle($request,Closure$next)

try
$user=JWTAuth::parseToken()->authenticate();
catch(Exception$e)
if($einstanceofTymonJWTAuthExceptionsTokenInvalidException)
returnresponse()->json([‘message’=>’Tokenkhônghợplệ’,’status’=>401],401);
elseif($einstanceofTymonJWTAuthExceptionsTokenExpiredException)
returnresponse()->json([‘message’=>’Tokenhếthạn’,’status’=>401],401);
else
returnresponse()->json([‘message’=>’Tokenkhôngtìmthấy’,’status’=>401],401);

returnUsDnext($request);

Bổ sung thêm thông tin mục tiêu khai báo sử dụng middleware vừa tạo ở trên tại file “apphttpKernel.php” với nội dung sau:

protectedUsDrouteMiddleware=[
‘jwt.verify’=>AppHttpMiddlewareUserAuthMiddleware::class,
];

Sử dụng Postman để kiểm tra

  • Đăng ký: 127.0.0.1:8000/api/register
  • Đăng nhập: 127.0.0.1:8000/api/auth/login
  • Refresh: 127.0.0.1:8000/api/auth/refresh
  • User: 127.0.0.1:8000/api/auth/me
  • Lưu ý: Đối với phương thức me và fresh khi sử dụng Postman cần sử dụng Bearer Token để xác thực.

Nguồn:

topdev/blog/json-web-token-jwt-la-gi/

techmaster/posts/33959/khai-niem-ve-json-web-token

jwt-auth.readthedocs.io/en/docs/quick-start/

Partager:

  • Twitter
  • Facebook

Thích bài này:

Thích Đang tải…

Reply
1
0
Chia sẻ

đoạn Clip hướng dẫn Chia Sẻ Link Tải Cấu hình cho laravel 7x là gì? ?

– Một số Keyword tìm kiếm nhiều : ” Review Cấu hình cho laravel 7x là gì? tiên tiến và phát triển nhất , Chia Sẻ Link Download Cấu hình cho laravel 7x là gì? “.

Giải đáp vướng mắc về Cấu hình cho laravel 7x là gì?

You trọn vẹn có thể để lại Comment nếu gặp yếu tố chưa hiểu nghen.
#Cấu #hình #cho #laravel #là #gì