2013-08-22 30 views
7

Tôi đang điều tra tạo trang ứng dụng đơn sử dụng ngăn xếp sau (mở để gợi ý ở đây)Bảo mật và bản địa hóa bằng Angular trong một ứng dụng Trang đơn?

  • góc
  • JQuery
  • ASP.Net MVC 4
  • Entity Framework 5

Tôi khá nhiều bán trên stack này và góc cạnh nhưng có một vài điều mà tôi không chắc chắn. Những người dùng khác nhau có vai trò khác nhau và chúng tôi sẽ cần phải có thể ẩn/hiển thị một số trang và/hoặc điều khiển nhất định trên các trang tùy thuộc vào vai trò. Tôi quen thuộc với một số giải pháp cho các ứng dụng web truyền thống hơn nhưng tôi không chắc chắn nơi tôi sẽ bắt đầu khi nói đến một ứng dụng trang duy nhất.

Tôi đã hy vọng không sử dụng chế độ xem một phần MVC mà chỉ gửi và xử lý mã máy chủ như WebApi. Nhưng sau đó góc sẽ phải xử lý tất cả các mẫu và điều đó có nghĩa là ai đó sẽ có quyền truy cập vào mẫu trên giao diện người dùng và có thể tìm ra các chức năng gọi là chúng không nên? Hay tôi nên kiểm tra vai trò trong các phương pháp WebAPI và đảm bảo rằng chúng có vai trò đúng?

Sự cố tiếp theo là bản địa hóa. Chúng tôi sẽ cần hỗ trợ nhiều ngôn ngữ. Tôi đã hy vọng rằng chúng tôi chỉ có thể có các tệp ngôn ngữ khác nhau, en_gb.XML và có chứa khóa và các bản dịch khác nhau của chúng. Sau đó, nếu người dùng đã thay đổi ngôn ngữ tôi sẽ có lẽ chỉ có thể thay đổi điều gì đó trong góc có lẽ sử dụng giá trị

angular.value("language", 'en_gb.js'); 

hoặc

angular.value("language", 'en_gb.xml'); 

Đã có người khác giải quyết các loại vấn đề.

Trả lời

4

Tôi có thể giúp bạn về các công cụ bảo mật tại đây. Bạn cần triển khai một số tùy chỉnh logic để ẩn \ hiển thị các phần tử dựa trên vai trò người dùng. Miễn là bạn có thể chuyển thông tin vai trò người dùng cho khách hàng, bạn có thể thực hiện logic ẩn hiển thị đó. Hãy ghi nhớ chương trình này \ ẩn logic nên được thúc đẩy bởi máy chủ hoặc bất cứ ai khác có thể thay đổi dữ liệu phía khách hàng và nhận được quyền truy cập vào chức năng.

Một cách để đạt được điều này sẽ là trả lại mẫu phía máy chủ (một phần lượt xem) cho ứng dụng khách để hiển thị (cả mẫu ng-includeng-view hỗ trợ tải mẫu máy chủ).Máy chủ có thể xác thực liệu người dùng có quyền truy cập và trả về phản hồi trống về lỗi không. Vì vậy, không có khả năng bị rò rỉ thông tin.

Có thể thêm một kiểm tra tương tự cho tất cả cuộc gọi webapi và trả lại mã ủy quyền không cho phép người dùng cuối.

5

Bảo mật: Bạn nên để AngularJS kiểm soát mọi thứ trong dạng xem như mẫu, xem một phần, v.v. vì AngularJS là một khung Front-End đầy đủ tính năng. Bởi vì nó chỉ là Front-End Framework, nó không chịu trách nhiệm về dữ liệu máy chủ, do đó, chỉ cần thực hiện một số cuộc gọi RESTful để tìm nạp/lưu/cập nhật/xóa dữ liệu. Và nó cũng KHÔNG chịu trách nhiệm về bảo mật, vì vậy những gì bạn gọi là "WebApi" PHẢI được bảo đảm 100% ở phía máy chủ. Vì vậy, ngay cả khi ai đó có thể tìm ra những gì anh ta không được phép làm, cuộc gọi sẽ không thành công, bởi vì thông tin đăng nhập của nó sẽ được kiểm tra ở phía máy chủ. Vẫn có những đòn tấn công độc hại, mà AngularJS có câu trả lời. Vui lòng xem phần "xem xét bảo mật" của http://docs.angularjs.org/api/ng. $ Http.

Bản địa hóa: AngularJS hỗ trợ bản địa hóa cho tiền tệ, ngày và số. Nhưng đối với chuỗi trong giao diện người dùng của bạn, không có gì được tích hợp sẵn trong ngôn ngữ. Bạn phải xây dựng câu trả lời của riêng bạn. Có một số nỗ lực để đạt được bản dịch với AngularJS, như ở đây: https://github.com/firehist/grunt-angular-translate

+0

Cảm ơn. Vì vậy, bạn đã xác nhận suy nghĩ của tôi về phần bảo mật của nó. Chỉ cần kiểm tra các vai trò trong WebApi. Đối với điều ngôn ngữ tôi nghĩ tôi sẽ thử cuộn của riêng tôi. Có lẽ sử dụng các nhà máy và một số templating có lẽ tôi có thể làm cho nó đúng. Cảm ơn các liên kết. Sẽ xem xét nó ngay bây giờ. – uriDium

Các vấn đề liên quan