Tùy chỉnh Laravel Authentication

10
Nguyễn Bảo Trung viết 8 tháng trước

Tùy chỉnh Laravel Authentication

Giới thiệu

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:
alt text
Và cả view tương ứng nữa:
alt text

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 Registration

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.

Bật tính năng Email Verification

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.

Chuyển hướng trang sau khi Registration

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';
}

Tùy chỉnh Validation Rules

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'],
    ]);
}

Login bằng Username thay vì Email

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';
    }
}

Kết luận

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!

Bình luận


White
{{ comment.user.name }}
Hay Bỏ hay
{{ comment.like_count}}
White

Nguyễn Bảo Trung

21 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}

  Cùng một tác giả


{{like_count}}

kipalog

{{ comment_count }}

Bình luận


White
{{userFollowed ? 'Following' : 'Follow'}}
21 bài viết.
1 người follow

 Đầu mục bài viết

 Cùng một tác giả