Tôi đã kết thúc việc kết hợp quy trình công việc ban đầu của mình với ví dụ xác thực của Express, được thấy tại đây . Nó như sau:
- Khi người dùng tải ứng dụng lần đầu, lệnh gọi http được thực hiện tới điểm cuối Express để kiểm tra xem phiên đã tồn tại cho người dùng chưa. Nếu vậy, người dùng được lưu trữ trong
$rootScope
và được coi là đã đăng nhập. - Bất kỳ khi nào tuyến AngularJS thay đổi, cùng một điểm cuối được truy cập. Bảo vệ tuyến đường đã được chỉ định theo cách tương tự như được mô tả tại đây
. Nếu điểm cuối trả về không có phiên nào tồn tại, hãy
$rootScope.user
chưa được đặt (nếu cần) và người dùng được chuyển hướng đến trang đăng nhập. - Khi biểu mẫu đăng nhập được xử lý, biểu mẫu này sẽ đăng lên điểm cuối Express. Điểm cuối truy xuất người dùng từ mongoDB (nếu nó tồn tại) và cố gắng băm mật khẩu. Nếu nó trùng khớp, phiên của người dùng được đặt, được lưu trữ trong DB mongo và điểm cuối trả về
user
đối tượng (được sử dụng để lưu trữ trong $ rootScope như đã đề cập trước đây). - Bất kỳ khi nào có bất kỳ điểm cuối nào khác được truy cập, các chức năng trước tiên được chuyển qua
restrict
chức năng đảm bảo rằng một phiên tồn tại trước khi gửi bất kỳ dữ liệu nào đến máy khách. Nó trả về một401
nếu không có phiên nào tồn tại, phiên này sẽ được xử lý ở phía Angular bằng cách sử dụng trình chặn HTTP này để hủy đặt$rootScope.user
và chuyển hướng đến màn hình đăng nhập. - Khi người dùng nhấp vào "đăng xuất" ở phía Angular, phiên sẽ không được đặt và bị xóa khỏi DB mongo,
$rootScope.user
được đặt thành null và người dùng được chuyển hướng trở lại trang đầu.