Trong dự án của tôi, tôi có hai vệ sĩ. AuthGuard và PermissionGuard. Tôi cần đầu tiên AuthGuard chạy và khi nó được giải quyết và nếu true permissionGuard bắt đầu nhưng bây giờ bảo vệ này đang chạy song song và permissionGuard không hoạt động tốt. cách tôi sử dụng cho vấn đề này là tôi đã gọi phương thức AuthGuard CanActivate trong bảo vệ quyền nhưng tôi nghĩ rằng có một cách khá tốt hơn để thực hiện việc này.Angular2 chạy Guard sau khi bảo vệ khác giải quyết
Trả lời
Tôi đã ở trong tình trạng tương tự vài tuần trước, vì vậy đã quyết định viết một số giải pháp "hacky" để đạt được điều này bằng cách sử dụng thuộc tính data
của đối tượng định nghĩa tuyến đường.
Ý tưởng là để xác định bảo vệ riêng của bạn (cho phép gọi nó là MainGuard
) mà sẽ đọc thuộc tính dữ liệu của bạn (ví dụ guardsList
) với một loạt các lính gác bên MainGuard.canActivate
chức năng và thực hiện chúng (bằng cách gọi guardsList[i].canActive
) một sau khi khác trong một vòng lặp. Bạn sẽ cần phải sử dụng ứng dụng Injector
để có thể gọi canActivate
trên bảo vệ đã cho.
Nó bị phức tạp khi bạn muốn hỗ trợ Observable
, Promise
, và đồng bằng boolean
bảo vệ tất cả dưới một guardsList
mảng, như bạn cần phải đăng ký và chờ đợi để hoàn thành vv hơn một chút
Tôi đã thực hiện "hack" này là Angular Library cho phép bạn thực hiện điều gì đó như sau:
const appRoutes: Routes = [
{
...
canActivate: [SequentialGuards],
data: { GUARDS_SEQ: [Guard1, Guard2, Guard3] }
...
}]
- 1. angular2: CanDeactivate guard
- 2. Angular2 auth guard với yêu cầu và quan sát http
- 3. Angular2 truyền dữ liệu từ CanActivate guard đến Resolve resolver?
- 4. Sự khác nhau giữa bảo vệ và bảo vệ [này]
- 5. Làm thế nào để giải quyết 'bảo vệ stack overflow' vấn đề trong R Studio
- 6. "gọi" sau khi chuyển sang Chế độ được bảo vệ
- 7. Lỗi lạ khi bật bảo vệ malloc
- 8. Cảnh báo về việc không sử dụng bundler khi chạy bảo vệ init
- 9. Lỗi khi chạy quy trình Bảo vệ: không thể tìm thấy phương thức số ít
- 10. Tại sao Ninject không giải quyết các thuộc tính được bảo vệ trong lớp cơ sở?
- 11. Áp dụng Giải quyết để thành phần gốc trong Angular2
- 12. Scala có bảo vệ không?
- 13. Bảo vệ w/RSpec2, Ruby1.9.3, Rails 3.1.3
- 14. Làm thế nào để Nested Angular2 ống Async giải quyết?
- 15. Angular2: Kích hoạt bảo vệ tuyến đường hiện tại - xử lý hành động đăng xuất
- 16. Promise.all(). Sau đó() giải quyết?
- 17. Vô hiệu hóa mã bảo vệ cho thông số kỹ thuật bảo vệ chạy
- 18. Angular2 Router và Nhiều giải quyết trong một tuyến đường
- 19. Lỗi bảo vệ khi xuất dự án Android sau khi cập nhật lên ADT 20
- 20. Các vấn đề bảo mật cần được giải quyết khi làm việc với Google App Engine?
- 21. Góc 2 Giải quyết chỉ hoạt động sau khi
- 22. Thiết bị giám sát bảo vệ ruby đơn giản
- 23. Java Mã bảo vệ
- 24. ghi đè nội bộ được bảo vệ bằng bảo vệ!
- 25. lý do đằng sau Object.clone() được bảo vệ
- 26. Cách bảo vệ "." char?
- 27. Elixir: Pattern Match hoặc Guard
- 28. Bảo vệ video flash khỏi tải xuống/phải bảo vệ
- 29. Swift 2: bảo vệ trong vòng lặp?
- 30. Chạy hàng loạt các công cụ bảo vệ mã VS
Có thể [this answer] (http://stackoverflow.com/a/40590812/6942210) có thể giúp bạn. Tôi nghĩ anh ấy có cùng một vấn đề. –
cảm ơn, câu trả lời của câu hỏi mà bạn đã đề cập là giống như cách tôi đã làm nhưng như tôi đã nói, tôi nghĩ rằng cách tốt hơn có thể tồn tại. –
@hosseinahmadi. Bạn vẫn cần trợ giúp với điều này? – AngularChef