Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Laravel giúp cho việc thực hiện việc xác thực vô cùng đơn giản. Chỉ với một câu lệnh:
php artisan make:auth
Laravel sẽ generate ra các controllers và routes tương ứng:
Và cả view tương ứng nữa:
Cách sử dụng auth của Laravel các bạn có thể tham khảo ở trang chủ laravel.com. Ở bài viết này mình xin giới thiệu cho các bạn một số cách tùy chỉnh sao cho phù hợp với dự án hơn.
Tắt tính năng đăng ký. Giả sử bạn sẽ phải làm một project ko có chức năng đăng kí(có thể ở đây là ko yêu cầu tài khoản, hoặc các tài khoản được set tĩnh), bạn vẫn có thể dùng authentication của laravel. Vì từ laravel 5.7, đã cung cấp thêm cho chúng ra option:
Auth::routes(['register' => false]);
vào trong file routes/web.php. Khi đó khí truy cập link đăng kí, thì màn hình sẽ hiển thì page 404.
Laravel 5.7 cho phép người dùng xác thực qua email thông qua việc thêm đoạn code:
Auth::routes(['verify' => true]);
Khi đó thì mã xác thực sẽ được lưu vào trường users.email_verified_at của bảng users
Laravel cũng cung cấp cho chúng ta 1 middleware để check 1 người dùng đã được xác thực hay chưa:
middleware('verified')
thêm nó vào route bạn muốn sử dụng điều kiện này.
Mặc định, Laravel điều phối người dùng đến url /home sau khi họ đăng ký thành công. Nếu muốn thay đổi, chúng ta vào file app/Http/Controllers/Auth/RegisterController.php và chỉnh sửa:
class RegisterController extends Controller
{
/**
* Where to redirect users after registration.
*
* @var string
*/
// protected $redirectTo = '/home';
protected $redirectTo = '/luffy';
Phức tạp hơn 1 chút, nhưng thường xuyên gặp là khi đăng nhập với route admin thì chuyển họ tới /admin
thì chúng ta sẽ overrite lại $redirectTo
bằng cách thêm đoạn sau vào RegisterController:
protected function redirectTo()
{
if (auth()->user()->role_id == 1) {
return '/admin';
}
return '/luffy';
}
Trong file app/Http/Controllers/Auth/RegisterController.php, chúng ta có thể tùy chỉnh sao cho phù hợp:
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:30'],
'email' => ['required', 'string', 'email', 'max:100', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'max:30', 'confirmed'],
]);
}
Các bạn vào file app/Http/Controllers/Auth/LoginController và chỉnh lại như sau:
class LoginController extends Controller
{
use AuthenticatesUsers;
// ... All other code
public function username()
{
// return 'email';
return 'username';
}
}
Trên đây mình đã giới thiệu cho các bạn một vài cấu hình có thể sử dụng trong Laravel 5.7 để có thể áp dụng Authenticantion
vào hệ thống một cách phú hợp hơn. Rất cảm ơn các bạn đã theo dõi!