2011-08-16 30 views
5

Dịch vụ web Java, có thể hiển thị các phương pháp khác nhau cho người dùng khác nhau không?Dịch vụ web Java - Các phương pháp web an toàn của người dùng

Ví dụ: tôi có 10 phương pháp trong dịch vụ web của mình nhưng tôi muốn cho phép người dùng Chỉ truy cập vào 1 hoặc 2 phương pháp, cách thực hiện điều này?

+0

đây có phải là dịch vụ web REST không? một SOAP? – ElenaT

+0

@ElenaT Đây là dịch vụ web SOAP. –

Trả lời

1

Tôi đoán bạn không thể ẩn hoàn toàn các phương thức khỏi người dùng. Điều duy nhất bạn có thể làm là chỉ cung cấp thông tin cần thiết cho Người dùng cụ thể. Trong một ứng dụng của tôi, tôi đã thực hiện điều này bằng cách sử dụng Pattern Design Design. Tôi sẽ cố gắng giải thích nó.

Bạn có thể tách logic này trong một số lớp không phải webservice. Tạo 2 dịch vụ web (một cho mỗi userAccess Model). Gọi logic tách biệt với từng dịch vụ web.

Giả sử bạn đã tạo lớp CommonA chứa phương thức 1 ~ 10. Tạo dịch vụ web nói ForUserA này chứa phương thức 1 và 2 chỉ gọi phương thức 1 và 2 của CommonA. và vân vân.

Sẽ là một niềm vui lớn nếu có ai đề xuất cách tốt hơn để thực hiện việc này.

1

Để dịch vụ web của bạn xác định người dùng nào hiện đang gọi phương thức webservice của bạn, bạn cần một số loại xác thực.

Vì cả hai SAOP & REST sử dụng giao thức HTTP, bạn có thể sử dụng phiên. Khi khách hàng của bạn đã tự xác thực, bạn có thể cho phép/từ chối truy cập vào bất kỳ webmethod nào bạn muốn.

Đây là ví dụ dễ dàng cho dịch vụ SOAP.

@Resource WebServiceContext wsContext; 

MessageContext mc = wsContext.getMessageContext(); 
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); 
String username = (String)session.getAttribute("username"); 
if(username.equals("userA") { 
    // Do your thing 
} else { 
    throw new WebServiceException("Not allowed to access this method."); 
} 
Các vấn đề liên quan