Authentication của laravel
Contents
1. Auth là gì?
Tiếp theo là một điều khá quan trọng trong Laravel đó là Auth, vậy Auth là gì? Hiểu đơn giản Auth là phần liên quan đến đăng nhập, đăng ký, reset password mà Laravel tạo sẵn cho chúng ta.
2. Cài đặt
Với các phiên bản trước Laravel 6 thì để tạo Auth ta sử dụng lệnh:
php artisan make:auth
Với phiên bản Laravel 6 thì chúng ta không cần chạy lệnh phía trên nhé vì Laravel 6 đã tạo sẵn cho chúng ta. Tiếp theo ta cài thêm thư viện để có view trỏ đến.
composer require laravel/ui "^1.2" //từ laravel 5.8 trở lên mới cài được nhe
Sau đó bạn chạy thêm lệnh này để render ra view mặc định của laravel.
php artisan ui vue --auth
Nếu chưa chạy tạo cơ sở dữ liệu lần nào thì chạy code dưới đây nhé.
php artisan migrate
Tiếp theo là bạn phải sửa đường dẫn link style, link javasript và thêm link bootstrap. Để đơn giản bạn copy code bên dưới và vào file resources/views/layouts/app.blade.php replace lại phần head nhé!
<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- CSRF Token --> <meta name="csrf-token" content="{{ csrf_token() }}"> <title>{{ config('app.name', 'Laravel') }}</title> <!-- Scripts --> <script src="{{ asset('resources/js/app.js') }}" defer></script> <!-- Fonts --> <link rel="dns-prefetch" href="//fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet"> <!-- Styles --> <link href="{{ asset('resources/sass/app.scss') }}" rel="stylesheet"> <!-- Bootstrap --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script> </head>
3. Kết Quả
Giao diện mặc định.
Giao diện đăng ký.
Giao diện đăng nhập
Giao diện reset password
4. Sử dụng
Khai báo use Illuminate\Support\Facades\Auth; để có thể sử dụng Auth.
$id = Auth::user()->id; //Lấy về ID người . $user = Auth::user() // Lấy về tất cả các thông tin của người dùng. $email = Auth::user()->email // Lây về email người dùng.
Muốn kiểm tra người dùng đăng nhập chưa ta sử dụng:
use Auth //khai báo trên class lệnh trên mới sử dụng được nhé! if (Auth::check()) { return (Auth::user()->email); }
5. Tùy chỉnh Authentication
5.1 Tắt tính năng Registration
Mình có sử dụng các chèn code vào file routes/web.php
Auth::routes(['register' => false]);
Nhưng nó không hoạt động trong dự án của mình. Do đó mình sử dụng tính năng này bằng cách ghi đè route đó.
Route::match(['get', 'post'], 'register', function(){ return redirect('/'); });
Điều này áp dụng được cho cả reset password nhé.
5.2 Thay đổi chuyển hướng trang của Authentication Laravel 6 mặc định
Bạn vào App\Http\Controller\Auth\LoginController.php và thay đổi thuộc tính redirectTo
protected $redirectTo = '/trang-admin';
File trên là thay đổi chuyển hướng login nếu bạn muốn chuyển hướng đăng ký hay reset password thì vào controller tương ứng nhé.
5.3 Tùy chỉnh thêm các thuộc tính và validate form đăng ký
Mình đọc được một bài viết khá hay, khá đầy đủ về vấn đề này. https://toidicode.com/authentication-trong-laravel-register-48.html
5.4 Thay đổi email đăng nhập thành một trường bất kì
Bước 1: Tạo thêm một function trong App\Http\Controller\Auth\LoginController.php. Nói tạo thêm chớ thực ra là nó ghi đề lại hàm đã được định nghĩa trong lớp AuthenticatesUsers.
public function username() { return 'id'; } //id là tên cột mình thay đổi cho email, các bạn thay thế theo nhu cầu của mình (username,...).
Bước 2: Vào App\Http\Providers\User.php để thêm cột đó vào model của mình.
protected $fillable = [ 'name', 'email', 'password', 'id' ];
Bước 3: Chỉnh sửa mã nguồn view. Bạn thay thế những gì có từ email thành tên trường của bạn.
- Màu xanh: là bạn thay thế thành tên trường của bạn
- Màu vàng: là bạn thay thế thành tiêu đề hiện bên trái thanh nhập liệu (Mình quên thay thành id rồi nếu làm theo bạn sửa thành id dùm mình nhé)
- Màu đỏ: là bạn thay thế hành kiểu của khung nhập.
Kết quả:
6. Kết luận
Như vậy mình đã hướng dẫn các bạn sử dụng Auth trong Laravel, cũng khá đơn giản phải không. Có thắc mắc gì các bạn để lại bình luận bên dưới nhé. Bài viết sau mình sẽ hướng dẫn các bạn Queue trong Laravel.