Session luôn là 1 phần không thể thiếu khi xây dựng website, nó giúp ta kiểm soát phiên làm việc của khách hàng trên website của bạn. Middleware giúp bạn lọc các HTTP request mà người dùng gửi tới, ví dụ bạn muốn truy cập 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
File cấu hình session của Laravel 5.x nằm trong thư mục config/session.php. Tại file này bạn có thể cấu hình 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ẽ lưu 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
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 đã đăng ký middleware trong Kernel bạ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 các Route
Route::group(['middleware' => ['web']], function () { // });
Qua bài này chắc các bạ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 có thể truy cập những bài hướng dẫn về Laravel khác trong trang của mình. Chúc các bạn thành công!