Các cách tiếp cận ủy quyền và các mẫu thiết kế cho các ứng dụng Node.js [đã đóng]


80

Tôi đang xây dựng giao diện quản trị nhiều trang cho nền tảng phần mềm nội bộ doanh nghiệp. Hãy suy nghĩ về nhiều logic keo gắn các API, truy vấn db và tập lệnh shell khác nhau lại với nhau.

Chúng tôi sẽ sử dụng node.js, khung thể hiện (bao gồm cả các mẫu ngọc bích) và LDAP để xác thực.

Tôi đang vật lộn để tìm thông tin về các mẫu thiết kế và các phương pháp hay nhất để ủy quyền trong các ứng dụng nút. Tốt hơn là tôi muốn sử dụng mô hình dựa trên vai trò vì người dùng của tôi đã quen với cách tiếp cận đó cũng như cách chăm sóc và cho ăn của nó.

Tôi mới sử dụng node.js, vì vậy xin đừng cho rằng tôi đã xem một mô-đun hoặc bài đăng blog phổ biến. Có thể là có rất nhiều thông tin và tôi chỉ đơn giản là không biết phải tìm ở đâu.

Cảm ơn trước vì bất kỳ thông tin nào bạn có thể cung cấp!

Câu trả lời:


63

Theo câu hỏi đầu tiên của bạn, bạn muốn thực hiện một số quy trình ủy quyền trong NodeJs. Tôi đã khám phá và sử dụng một số API của NodeJs. Tôi muốn làm theo các API cho các ứng dụng doanh nghiệp.

  • Để xác thực: Passport hoặc Satellizer nếu đang phát triển SPA (front-end) trong AngularJS.

  • Cho phép: ACL . Bảo mật dựa trên vai trò trên các phương thức và API REST. Tôi muốn đề cập đến casbin nếu bạn muốn sử dụng cả RABC, ABAC.

Thứ hai, bạn muốn một số cách tiếp cận triển khai và phát triển trong NodeJs.

  • Mẫu thiết kế dễ dàng và yêu thích của tôi và Framework cho NodeJs: MVC framework, SailsJs . Để sẵn sàng khởi động và kiến ​​trúc mô-đun. Quản lý mã dễ dàng về lâu dài (Yêu cầu thiết thực nhất đối với ứng dụng doanh nghiệp). Bảo trì dễ dàng. SailsJs cũng được cấu hình sẵn với Socket.io , bằng cách sử dụng nó, bạn có thể tạo mô-đun thời gian thực, widget, widget trò chuyện trong dự án của mình.

  • Express Bạn có thể sử dụng Express và thiết kế cấu trúc dự án MVC tùy chỉnh của riêng mình. Điều này cũng phổ biến và mạnh mẽ. Bạn có thể tìm thấy các dự án hạt giống phổ biến tương tự trên Yeoman

  • Redis Là một bộ nhớ đệm hoặc lớp phiên. Việc sử dụng bộ nhớ đệm riêng biệt hoặc lớp phiên luôn tốt, vì nó sẽ không chặn bạn mở rộng ứng dụng của mình trên đám mây thành phiên bản thứ n.

  • Bạn có thể sử dụng RedisSocket.io để tạo các tính năng thời gian thực như Vị trí địa lý , sự hiện diện của người dùng (trực tuyến / ngoại tuyến), trò chuyện, thông báo đẩy và nhiều tính năng khác.

  • ORM: Đường nước . Đối với cách tiếp cận truy vấn dễ dàng của nó. Nó cũng là ORM có sẵn và mặc định của SailsJs. Bạn cũng có thể sử dụng Sequelizejs , nếu không sử dụng SailsJs. Tôi khuyên bạn nên sử dụng các trình kết nối gốc do các nhà cung cấp DB cung cấp.

  • Cơ sở dữ liệu: Theo yêu cầu của bạn. Waterline ORM hỗ trợ PostgreSQL, MySQL, MongoDB và hơn thế nữa ..

  • Công cụ xem faviourite của tôi: EJS . Không cần phải học những điều mới để phát triển lớp trình bày của bạn. Nó cũng là công cụ xem có sẵn và mặc định của SailsJs, đó là lý do tại sao tôi là một fan hâm mộ của SailsJs.

Tôi nghĩ rằng, tôi đã bao gồm tất cả thông tin quan trọng để tạo một ứng dụng Doanh nghiệp trong NodeJs. Tôi không nói, các gói trên là tốt nhất, nhưng cộng tác, chúng có thể phù hợp nhất với mọi tình huống doanh nghiệp. Có những gói đã biết khác, bạn có thể sử dụng theo yêu cầu của riêng mình.


2
waterline and sails.js +1
Travis Webb

@kosnkov Hầu hết những điều này đều ổn. Hãy xem HapiJS để có giải pháp thay thế mạnh mẽ hơn cho Express và Sequelize để biết giải pháp thay thế cho Waterline. Theo tôi, tôi nghĩ SailsJS là quá mức cần thiết. Nếu bạn đến từ nền tảng RAILS hoặc Django, bạn nên hiểu đủ khái niệm để sử dụng được Express / Hapi và Waterline / Sequelize; nó nhẹ hơn nhiều so với Sails. Tôi chọn Hapi / Sequelize.
damusix

Danh sách đẹp. Cũng sẽ tốt nếu thêm một lưu ý nhỏ về bảo vệ bạo lực. Gói như giới hạn tỷ lệ-linh hoạt nên phù hợp.
Animir

15

Dưới đây là một số thông tin để bắt đầu:

Hy vọng điều đó làm cho nó dễ dàng hơn để bắt đầu.


Cảm ơn bạn! Tôi sẽ kiểm tra các liên kết đó. Các nhanh dụ tuyến đường trung dường như rất gần với các trường hợp sử dụng tôi đã
Dave Snigier

53
Kỳ lạ là câu trả lời của bạn không chứa từ Ủy quyền :)
redben

1
Câu trả lời hoàn hảo, đã giúp tôi rất nhiều. Mặc dù không có sự cho phép từ :)
Ông Baudin




0

Tôi nên nói Node-Authorization cũng là một ứng cử viên sáng giá. Ý tưởng được mượn từ SAP (nhà cung cấp ERP), nó là một ủy quyền hướng đối tượng. Và nó cũng có thể được sử dụng làm nhạc đệm với các khuôn khổ khác như: Passport và Express.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.