2011-07-11 28 views
5

Tôi cố gắng tạo một trang web có chơi với một thành viên và một khu vực không phải là thành viên. Vì vậy, tôi có bộ điều khiển với các phương pháp thành viên và không phải thành viên. Nhưng tôi chỉ có thể làm cho toàn bộ bộ điều khiển an toàn [@With (Secure.class)]. Có thể chỉ thực hiện một vài phương thức bảo mật và truy cập những phương thức khác mà không cần đăng nhập?Chơi bộ điều khiển khung với các phương pháp an toàn và không an toàn. Khả thi?

Cảm ơn

Trả lời

1

Có, bạn có thể thực hiện việc này. Xóa @With chú thích và sử dụng phương pháp này của Bộ điều khiển an toàn khi bạn muốn giới hạn quyền truy cập cho người dùng được kết nối:

Secure.checkAccess(); 

Với phương pháp này, bạn thậm chí có thể sử dụng chú thích @Check. Ví dụ:

@Check("member") 
    public static void restrictedAction() { 
     Secure.checkAccess(); 
     ... 
    } 
+0

bạn đã bao giờ thử gọi phương thức checkAccess từ bộ điều khiển trong mô-đun chưa? Nó dường như không hoạt động. Nó ném một lỗi rằng phương thức này không hiển thị. Thật vậy, khi bạn thấy định nghĩa của phương thức, nó không được xác định là công khai theo mặc định. Làm thế nào đến nó sau đó làm việc mà không có bất kỳ vấn đề trong bộ điều khiển ứng dụng? – preslavrachev

1

Không, không có cách nào đơn giản để thực hiện việc này. Bạn có thể kiểm tra vai trò, nhưng không được kết nối với người dùng, khách truy cập.

Bạn sẽ phải thêm @Before chú thích và điều đó sẽ hơi phức tạp. Đơn giản chỉ cần chia bộ điều khiển của bạn thành nhiều bộ điều khiển. Đó là bằng cách này, functionnaly tốt hơn để làm điều đó theo cách đó, chứ không phải trộn lẫn các phương pháp công/tư nhân.

3

Vâng, bạn có thể, mặc dù nó sẽ đòi hỏi một số điều chỉnh trên lớp an toàn. Nếu bạn kiểm tra @Secure, nó có một phương thức được chú thích bằng @Before. Theo documentation, bạn có thể chỉ ra phương thức nào được áp dụng cho @Before và phương thức nào được bỏ qua.

@Before(unless="login") 

Vì vậy, sẽ không phải là vấn đề khi chạy @Trước khi sử dụng phương pháp công khai. Hãy nhận biết nó có thể không hoạt động đúng cách bằng cách sử dụng @With và bạn có thể cần tạo @Before của riêng bạn trong bộ điều khiển quản lý bảo mật (gọi các phương thức thích hợp trong bảo mật).

Nhưng sẽ đơn giản hơn nếu chỉ có 2 bộ điều khiển, một cho người dùng an toàn và một cho phương pháp công khai.

+0

Upvote của tôi đi theo đề xuất của hai bộ điều khiển. Tôi đã đến câu hỏi này vì chú thích 'Trước' không hoạt động đúng với một mảng 'trừ' của các tên phương thức cần bỏ qua. Bạn đề cập đến nó có thể không hoạt động đúng bằng cách sử dụng 'Với', đó là trường hợp của tôi. Bạn có thêm thông tin về lý do đó không? Lỗi, hoặc hiệu ứng phụ thiết kế? Cảm ơn! – palako

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