JavaXMLRPC:如何使过程调用可以访问登录凭据?
假设我的服务器导出以下过程:
List listFiles(int userId);
我不能只允许任何用户列出给定用户的文件。他们需要获得授权才能这样做
我的XML-RPC服务使用基本身份验证对用户进行身份验证
建议采用什么方法使过程调用可以访问登录凭据(当前用户对象)
你可以在下面搜索框中键入要查询的问题!
假设我的服务器导出以下过程:
List listFiles(int userId);
我不能只允许任何用户列出给定用户的文件。他们需要获得授权才能这样做
我的XML-RPC服务使用基本身份验证对用户进行身份验证
建议采用什么方法使过程调用可以访问登录凭据(当前用户对象)
# 1 楼答案
我找到了解决办法。关键是对RequestProcessorFactoryFactory进行子类化,并向处理程序指定要使用的子类
http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory.html
对于请求特定的配置,子类可以重写此方法。典型的子类如下所示:
参数: pRequest——请求对象。 抛出: XmlRpcException
下面是一个告诉默认处理程序使用工厂的示例:
为了回答我最初的问题,我将创建一个RequestProcessorFactoryFactory,如下所示:
因此,XML-RPC公开对象将能够引用经过身份验证的用户并相应地授权方法
# 2 楼答案
如果编写自己的XmlRpcServlet子类(例如,请参见http://ws.apache.org/xmlrpc/server.html节基本身份验证),可以将用户凭据粘贴到ThreadLocal上(请参见http://java.dzone.com/articles/java-thread-local-%E2%80%93-how-use)