Tôi hiện đang thử nghiệm với giải pháp sau. Mặc dù nó sẽ chỉ hoạt động cho các ứng dụng có một nhóm người dùng khá đơn giản, nhưng nó có thể giúp ích cho bạn.
Để bắt đầu, xác thực người dùng được thực hiện mà không có extjs, bằng cách sử dụng trang HTML/CSS đơn giản. Khi người dùng đăng nhập, chi tiết của nó (id người dùng, vai trò) được lưu vào phiên PHP. Và sau đó trang chuyển hướng đến một trong hai ứng dụng extjs.
Một ứng dụng cho người dùng bình thường (tôi sẽ gọi cho họ là khách hàng), đây là những người mà JS phía khách hàng không bao gồm bất kỳ chức năng quản trị viên nào. Ứng dụng khác dành cho quản trị viên.
Cả hai ứng dụng đều có lớp học của chúng được kế thừa từ các lớp cơ sở. Vì vậy, chúng tôi có, ví dụ, base.mainMenu từ đó cả admin.mainMenu và clients.mainMenu kế thừa. Sự khác biệt duy nhất trong kịch bản app.js là các bộ điều khiển được tải, và mỗi mô-đun tải động extJS 4, chỉ các khung nhìn liên quan mới được tải (tức là, nhìn thấy phía máy khách). Trong trường hợp của tôi, tất cả các trang đều tải động, vì vậy người dùng của tôi chỉ có thể tải trang động trong menu chính của họ.
Ứng dụng quản trị chặn các tính năng nhất định bằng cách sử dụng biến toàn cục JS bao gồm vai trò của người dùng. Vì vậy, ví dụ, việc ẩn nút 'chỉnh sửa' từ người kiểm duyệt (nhóm quản trị có ít quyền hơn) được thực hiện khi chế độ xem được tải (thực tế điều này thực sự được thực hiện bằng cách không tải plugin cho phép chỉnh sửa trên chế độ xem).
Để kết thúc tất cả, mọi cuộc gọi đến máy chủ sẽ kiểm tra xem người dùng phiên có quyền đối với thao tác được yêu cầu hay không, vì vậy bất kể tập lệnh phía máy khách, chỉ người thực hiện quyền thích hợp mới có thể thực hiện thao tác máy chủ.
Để tóm tắt, bạn có 3 chiến lược khác nhau mà bạn có thể kết hợp và trận đấu:
- Tải ứng dụng khác nhau cho người dùng khác nhau. Nếu các lớp của bạn tất cả vốn có từ các lớp cơ sở, điều này dễ dàng hơn việc duy trì 2 hoặc nhiều ứng dụng hoàn toàn khác nhau.
- Sử dụng biến toàn cầu JS để tắt/bật một số tính năng nhất định cho một số người dùng nhất định. Điều này chỉ tốt nếu bạn không gặp vấn đề gì với các tính năng tải phía máy khách mà sau đó bị vô hiệu hóa (nhưng vẫn thấy bởi các trình gỡ lỗi).
- Bất kể điều gì, tất cả cuộc gọi phía máy chủ đều được kiểm tra với biến phiên.
Đây thực sự là ví dụ tốt nhất để làm điều này, ngay cả khi nó là trung tâm Java. Cảm ơn bạn đã cung cấp liên kết này !! –
Làm việc tốt trong blog của bạn .. –