Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Web服务-按用户划分的安全Web方法_Java_Web Services - Fatal编程技术网

Java Web服务-按用户划分的安全Web方法

Java Web服务-按用户划分的安全Web方法,java,web-services,Java,Web Services,JavaWeb服务,是否可以向不同的用户公开不同的方法 例如,我的web服务中有10个方法,但我只想允许用户访问1个或2个方法,如何才能做到这一点?我想您无法对用户完全隐藏这些方法。您唯一能做的就是只向特定用户提供所需的信息。在我的一个应用程序中,我使用装饰设计模式实现了这一点。我会尽力解释的 您可以在一些非webservice类中分离此逻辑。创建2个web服务(每个userAccess模型一个)。从每个web服务调用独立的逻辑 假设您创建了包含方法1~10的CommonA类。创建web服务,比

JavaWeb服务,是否可以向不同的用户公开不同的方法


例如,我的web服务中有10个方法,但我只想允许用户访问1个或2个方法,如何才能做到这一点?

我想您无法对用户完全隐藏这些方法。您唯一能做的就是只向特定用户提供所需的信息。在我的一个应用程序中,我使用装饰设计模式实现了这一点。我会尽力解释的

您可以在一些非webservice类中分离此逻辑。创建2个web服务(每个userAccess模型一个)。从每个web服务调用独立的逻辑

假设您创建了包含方法1~10的CommonA类。创建web服务,比如说ForUserA,它只包含调用CommonA的方法1和2的方法1和2。等等


如果有人能提出更好的方法,那将是一件非常愉快的事情

为了让您的Web服务确定当前哪个用户正在调用您的Web服务方法,您需要某种身份验证

因为SAOP和REST都使用HTTP协议,所以您可以使用会话。 一旦您的客户对自己进行了身份验证,您就可以允许/拒绝他访问您喜欢的任何webmethod

下面是一个简单的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."); 
}

这是RESTWeb服务吗?SOAP服务?@ElenaT这是SOAP web服务。