Bài 11: Session và Middleware trong laravel 5.x – Công nghệ 5s

Session luôn là 1 phần không hề thiếu khi kiến thiết xây dựng website, nó giúp ta trấn áp phiên thao tác của người mua trên website của bạn. Middleware giúp bạn lọc những HTTP request mà người dùng gửi tới, ví dụ bạn muốn truy vấn vào trang quản trị trước hết bạn phải đăng nhập. nếu ko middleware sẽ chặn và chuyển bạn về trang đăng nhập

1. Sesion trong laravel

File thông số kỹ thuật session của Laravel 5. x nằm trong thư mục config / session.php. Tại file này bạn hoàn toàn có thể thông số kỹ thuật lưu session dạng file hay tại bảng, tên bảng session, thư mục chứa file … Mặc định laravel sẽ tàng trữ session của bạn bằng file trong thư mục ‘ storage / framework / sessions ‘
Cách sử dụng session .

Bây giờ ta tạo 1 url để test tại file route

Route::get('demo-session', 'DemoController@testSession' );

Lưu trữ 1 biến trong session và lấy giá trị của biến đó ra trong Controller

public function testSession(){
	Session::put('user', 'Thông tin user');
	// Tạo session tên user với giá trị là Thông tin user
	$ss = Session::get('user');	
	// Lấy giá trị của session ra	
	var_dump($ss);
}

Tạo session với key là 1 mảng:

public function testSession(){
	Session::put('user.id', '1');
	Session::put('user.name', 'Công nghệ 5s');
	// Tạo session 
	$ss = Session::get('user');	
	// Lấy giá trị của session 
	var_dump($ss);
}

Kiểm tra 1 session có tồn tại hay không trong Laravel

if(Session::has('user')){
	$ss = Session::get('user');	
}

Xóa 1 session khỏi Laravel

Session::forget('user');

2. Middleware trong Laravel
Thư mục chứa Middleware : app / Http / Middleware
Laravel 5 mặc định tạo sẵn cho bạn 1 số middleware như Authentication, CSRF token …
Tạo 1 middleware trong Laravel

Bạn có thể tạo thủ công bằng cách tạo 1 file trong thư mục chứa là app/Http/Middleware hoặc tiện lợi hơn là tạo bằng artisan

Mở command line tại thư mục gốc và gõ

php artisan make:middleware CheckLevelMiddleware
//CheckLevelMiddleware là tên của middleware

Tạo middleware trong laravel 5

Bây giờ mình code vào Middleware mà mình mới tạo, nằm trong app / Http / Middleware / và thêm vào :

namespace App\Http\Middleware;

use Closure;
use Auth;

class CheckLevelMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check()&&Auth::user()->level==1){
            // Nếu đã chứng thực và level ==1 (là admin)
            return $next($request);
        }else{
            return redirect('/');
            // Nếu không phải chuyển hướng về trang chủ
        }
    }
}

Đăng ký middleware mới tạo với Laravel trong app / Http / Kernel. php

Nếu muốn mọi Http Request đều duyệt qua thì bạn tìm đến đoạn protected $middleware và khai báo tại đây

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,

        \App\Http\Middleware\CheckLevelMiddleware::class,
    ];

Nếu bạn chỉ muốn duyệt tại 1 Route nào đó thôi bạn khai báo tại protected $routeMiddleware 

Nếu muốn tạo middleware cho 1 nhóm các Route bạn khai báo tại protected $middlewareGroups 

Sau khi đã ĐK middleware trong Kernel bạn hoàn toàn có thể sử dụng tạo route

Route::get('admin', function () {
    //
})->middleware('ChecklevelMiddleware');

Nếu muốn duyệt qua nhiều middleware

Route::get('admin', function () {
    //
})->middleware('Middleware1','Middleware2');

Tạo middle cho 1 nhóm những Route

Route::group(['middleware' => ['web']], function () {
    //
});

Qua bài này chắc những bạn đã hoàn toàn có thể nắm session và middleware trong Laravel 5, nếu muốn xem thêm cách bài khác về Laravel 5 bạn hoàn toàn có thể truy vấn những bài hướng dẫn về Laravel khác trong trang của mình. Chúc những bạn thành công xuất sắc !