Hướng dẫn react php authentication - phản ứng xác thực php
Đây là bài đầu tiên trong series: Hôm nay ăn gì với Laravel, ReactJS, React Hook, Redux Saga. Nếu các bạn chưa rõ mục đích mình tạo series này thì vui lòng ấn vào link và đọc nha. Thật ra ban đầu mình không định làm chức năng này vì chỉ muốn cho một người sử dụng web thôi. Nhưng rồi mình nghĩ có lẽ nên phân chia quản lý ra nhiều users thì sẽ thiết thực hơn. Hãy cùng đi từ phía backend trước nhé BackendHiện tại laravel đã ra tới bản 7.0, và câu lệnh 0 đã không còn sử dụng được nữa. Nhưng đương nhiên không phải là Laravel đã khai tử nó, đơn giản chỉ là chuyển sang 1 cách khác thôi. Đầu tiên bạn hãy chạy command 1. Sau đó thì sử dụng 2, nếu bạn dùng vue thì có thể thay react = vue. Tiếp tới thì các bạn chỉnh sửa file migration sao cho phù hợp rồi chạy migrate là được. Giờ thì bạn có thể sử dụng các chức năng như đăng nhập hay tạo tài khoản, nhưng ở đây mình sử dụng reactjs nên mình cần custom lại chút thì mới có thể sử dụng được. Nếu bạn chưa cách kết hợp reactjs trong laravel thì có thể đọc bài viết Sử dụng ReactJs trong project Laravel của mình nhé.Giờ mình sẽ tạo 3 để xử lý việc đăng nhập và đăng ký. Đăng ký thì sẽ khá đơn giản, chỉ là chúng ta tạo ra một người dùng mới trên hệ thống, nếu các bạn có thời gian thì hãy làm cả chức năng xác nhận email nhé. Lưu ý vì chúng ta sử dụng react nên respone trả về phải là json nhé.
Còn đối với đăng nhập, ban đầu mình có sử dụng 4 thì không được, và mình đã vào hẳn trong function của laravel và xem
Ở trong file 5 bạn nhớ thêm đoạn này nhé
FrontendPhân chia thư mụcVì phải sử dụng thêm 6 nên bước này ban đầu sẽ mất khá lâu để setup. Mình sẽ nói qua về cách mình chia thư mục đã nhé:Tất cả source code sẽ được lưu trong 7. Mình có chia nhỏ ra thêm thành các thư mục con như sau:componentsĐây sẽ là nơi chứa các 8 của mình. Mình có phân ra thành 2 loại nhỏ nữa là 9 và 0. 9 chính là nơi lưu trữ các view mà các bạn có thể truy cập. Còn 0 sẽ là nơi chưa 3 (Route sử dụng cho nhưng user không đăng nhập, ở đây hiện tại sẽ chỉ có view đăng nhập và đăg ký) và 4 (Route sử dụng cho các user đã đăng nhập)sharedĐây sẽ là nơi mình lưu nhưng config để dùng storesNếu bạn sử dụng 6 thì đã biết răng nó sẽ tạo ra 1 stores chung để lấy dữ liệu, và đây chính là nơi để mình code những chức năng liên quanutilsĐây là nhưng function mà mình sẽ sử dụng lại ở nhiều nơi Redux sagaĐể sự dụng được 6 thì chúng ta sẽ phải thay đổi 1 chút ở file 7. Trước tiên cần tạo 1 file 8 trong 9
Ở phần import là những packet mà mình sử dụng, các bạn nhớ cài đặt nhé. Ở đây mình có sử dụng thư viện 0. Nếu bạn chưa biết về khái niệm này thì có thể đọc bài này nha: Immutability và Immutable.js trong ReactJs. Xuyên suốt dự án mình sẽ sử dụng nó đó.Giờ hãy cùng thiết lập store nhé, trong thư mục 1 sẽ bao gồm những files và folder sau: Trong folder 2 sẽ là những file tương ứng với từng view. Ví dụ mình làm cho chức năng đăng nhập và đăng ký thì sẽ tạo file 3. 4 là nơi để mình sẽ 5 tất cả những 6 lại. Trong 7 thì mình sẽ 8 tất cả các saga. Nói thì khá khó hình dung với những bạn mới, chút nữa mình sẽ đưa ra code cụ thể có lẽ các bạn sẽ dễ hình dung hơn. Hiện tại chưa có gì nên các file sẽ chỉ như sau: 9:
0:
Giờ sẽ tới file 7
Tạo modules phục vụỞ trong folder 2, các bạn hãy tạo 3 file 3
4:
5:
Giờ ở trong 6 chúng ta sẽ tạo file 3. 0Cuối cùng là update lại 4 và 7 9 1 0 2Thiết lập routesỞ trong 7 bạn sẽ thấy có 3 được import từ 4. Giờ chúng ta hãy cùng xem trong đó có gì nhéindex.js: 3Ở đây các bạn sẽ thấy mình có chia ra làm 2 loại routes nư mình nói ở trên history.js: 4Giờ mình sẽ tạo 5. Trong folder 6 trông sẽ như sau: 7 sẽ để export 2 file kia ra nên trông rất đơn giản 5Ở trong 8 sẽ chứa phần để xử lý với store, như việc chuyển state sang props và dispatch các action 6Ở 9 sẽ chứa code xử lý kiểm tra curentUser trong store 7Với guest-route thì cũng tương tự, chỉ là đổi logic xử lý 1 chút. Tạo viewỞ trong folder 0, mình sẽ tạo 1 folder 1 có cấu trúc như sauMình sẽ chỉ đi vào những file quan trọng thôi nhé: 3 8Như các bạn đã thấy ở đây mình đã sử dụng hook để quản lý tate thay vì cách cũ, code đã ngắn đi rất nhiều. Ở đây thì mình sẽ làm view đăng nhập và đăng ký chung 1 địa chỉ đường dẫn. Bạn có thể tách ra hoặc làm giống mình, đó là tùy ở quyết định của bạn. 3 9Ở 4 mình đã 5 action 6 để gọi tới api thực hiện việc thêm người dùng. Và View đăng nhập thì cũng làm gần như tương tự nha.Bài viết này hôm nay sẽ kết thục tại đây, các bạn có gì góp ý thì hãy để lại comment cho mình nhé. Hẹn gặp bạn lại ở bài viết tiếp theo |