Chức năng đăng nhập nodejs
Hôm nay mình sẽ hướng dẫn các bạn làm các chức năng signin, signup sử dụng các module như: Passport, flash,express-validator và bcrypt, Cũng như các bài hướng dẫn trước thì bước đầu tiên thì các bạn phải tạo cho mình một folder trong folder đó là nơi mà chúng ta viết chương trình cho các chức năng. Cài đặt các module để thiết lập chương trình như: Trong folder view bạn chọn index.pug. Trong index.pug bạn code như sau nhé: Thiết Lập DatabaseCài đặt mongodb, các bạn tạo cho mình một file .env. Trong file này bạn bạn viết Định Nghĩa Schema Cho Mongoose Và Mã Hóa Password Trước Khi Lưu Vào DatabaseCác bạn tạo cho mình một folder là model trong folder bạn tạo cho mình file user.model.js Thiết Lập cho PassportCác bạn sau khi mà install các module, thì các bạn nhớ khai báo module này vào trong file app.js nhé Chú ý: Thứ tự cấu hình đối tượng passport rất quan trọng. Chúng ta khởi tạo đối tượng passport ở trên cùng bằng câu lệnh var passport = require('passport');. Sau đó chúng ta truyền đối tượng này vào logic trong file config/passport.js. Cuối cùng chúng ta đẩy đối tượng này vào router/users.js, trong file này nó sẽ sử dụng đối tượng passport đã được cấu hình. Với file này chúng ta sẽ có một server chạy trên cổng 8000. Routers router/users.jsChúng ta sẽ thiết lập các router đơn giản. Chúng ta sẽ có những router sau:
Xác Thực Với Passport LocalGiờ chúng ta sẽ tạo user model, cấu hình passport cho xác thực local và sử dụng cấu hình passport cho việc xủa lý đăng nhập và đăng ký. User ModelVới trường hợp local chúng ta sẽ dùng email và password. Bạn có thể thay đổi một vài trường mà bạn muốn. Bạn có
thể sử dụng username và password cho việc xác thực tài khoản local. Chúng ta đã hoàn thiện user model. Chúng ta “băm” (hashing) mật khẩu của user trước khi lưu nó vào database. Điều này có nghĩa là chúng ta sẽ không phải lưu mã hash vào trong bảng user. Cấu Hình Passport Cho Tài Khoản LocalTất các cấu hình cho passport sẽ được viết ở file config/passport.js. Chúng ta code tách riêng phần này ra ngoài file server, giống như routes và config. Viết riêng ra một file sẽ “clean” và ngắn gọn hơn. Chúng ta tạo ra một đối tượng passport ở trong server.js, và tiếp theo đẩy nó và config/passport.js. Chúng ta sẽ cấu hình Strategy cho các trường hợp local. Đây cũng là tệp chúng ta thể hiện các hàm serializeUser và deserializeUser để lưu trữ thông tin user trong session. Các bạn nên đọc qua document của passport docs để hiểu cách hoạt động của package này. Xử Lý Yêu Cầu Đăng Nhập Và Đăng KýChúng ta xử lý đăng nhập và đăng ký ở trong file config/passport.js. Thì các bạn làm theo như thế này nha: Kiểm Tra Đăng KýVới những gì chúng ta đã cấu hình cho passport. Nó sẽ sử dụng config của chúng ta và form đăng ký có thể hoạt động. Thì chúng ta require passport vào file app.js để xác thực. // app.js Nếu mọi thứ theo kế hoạch, bạn sẽ được đăng nhập, thông tin user sẽ được lưu trong session và bạn được chuyển tới trang /signin để đăng nhập. Để quản lý mongodb các bạn có thể dùng Robomongo. Cài đặt và kết nối vào db của mình. Với những user đã được đăng ký, giờ chúng ta làm chức năng đăng nhập. Cũng tương tự như chức năng đăng ký. Chúng ta sẽ thêm một Strategy vào file config/passport.js và sửa file router/users.js Trong file // router/users.js Validator Trang Đăng Kýexpress-validator là một tập hợp các middlewares express.js các chức năng của xác thực của validator.js. Còn trang đăng ký chúng ta phải xác thực xem bạn có nhập đúng email hay không và xem email có tồn tại, password phải nhập đúng số kí tự bắt buộc để tăng khả năng bảo mật tài khoản,.. Trong file router/users.js Ví dụ: khi chúng ta nhập chưa đủ kí tự password thì xem nó báo lỗi như thế nào nhé Lời KếtVậy Là Xong Chức Năng Đăng Nhập Sử Dụng NodeJS Và MongoDB rồi nhé. Các bạn tự code và xem kết quả nhé, khi làm xong bài này các bạn sẽ nắm được kiến thức về Authentication.
Nếu mọi người cảm thấy bài viết này hay thì có thể ủng hộ mình để mình có động lực để ra những bài topic hay và chất lượng hơn ủng hộ mình tại đây nha. Chúc Các Bạn Thành Công!! |