sách gpt4 ăn đã đi

Làm cách nào để truy cập phương thức JAX RS từ bộ lọc servlet thông thường?

In lại Tác giả: Walker 123 Thời gian cập nhật: 29-11-2023 09:30:07 25 4
mua khóa gpt4 giày nike

Tôi đang tạo mô hình xác thực tùy chỉnh cho API JAX-RS của mình. Vì tôi đang sử dụng Java EE 6 nên nó không hỗ trợ các trình chặn, vì vậy tôi phải thực hiện việc đó bằng các bộ lọc thông thường.

Tôi muốn chú thích các phương thức JAX-RS của mình dựa trên một bộ quy tắc như phương thức công khai và riêng tư. Để làm điều này, tôi cần truy cập các phương thức tài nguyên của mình thông qua bộ lọc (để có thể đọc các chú thích).

Tôi nên làm gì? Có lựa chọn tốt nào khác không liên quan đến việc cập nhật môi trường của tôi lên JAX-RS 2.0 không?

EDIT 1: Thật không may, tôi đang tìm kiếm tính di động.

câu trả lời hay nhất

Chúng tôi đã bắt đầu cuộc trò chuyện về CDI nhưng không thể đưa thông tin đó vào phần nhận xét... vì vậy để giải quyết mối lo ngại của bạn:

  1. Thiết bị chặn CDI có thể mang theo được.
  2. để truy cậpYêu cầu HttpServlet, bạn cần một bộ lọc giao diện người dùng để đưa nó vào ngữ cảnh (ví dụ:Chủ đềLocal hoặc CDI@Yêu cầuScoped và một số nhà sản xuất). Nhưng DeltaSpike đã bảo vệ bạn dịch vụmô-đun. Ngoài ra hãy kiểm tra bảo vệmô-đun.
  3. Sẽ Yêu cầu HttpServlet tiêmđánh chặn, không cần tham số bổ sung cho chính tài nguyên đó.
  4. Để thay đổi phản hồi được trả về, chỉ cần thay đổi phản hồi từ @AroundInvoke Phương pháp đánh chặn trả về một cái gì đó. Bạn có thể sử dụng InvocationContext. tiến hành() Truy cập đối tượng được trả về bằng phương thức ban đầu. .

Tóm lại (gần như mã giả):

@MySecurityInterceptorLiên kết
lớp công khai MySecurityInterceptor {
@Inject yêu cầu HttpServletRequest;

@AroundInvoke
Đối tượng công khai an toàn (InvocationContext ctx) {
// kiểm tra bảo mật
nếu(yêu cầu.isUserInRole("foo") ) {
Giá trị đối tượng = ctx.proceed();
// sửa đổi giá trị trả về
((MyCustomResponseBase) giá trị).setSecurityPassedFlag(đúng);
giá trị trả về;
// hoặc thay đổi hoàn toàn (Tôi không chắc điều này có khả thi hoàn toàn không, hãy thử và xem :)
MyResponseValueWrapper w = new MyResponseValueWrapper(giá trị);
w.setXxxx("năm");
trả về w;
}
khác {
// xử lý nó...
}
}

Làm cách nào để truy cập các phương thức JAX RS từ bộ lọc servlet thông thường? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21301896/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress