我正在学习 Java RMI ,而我正在尝试进行一项任务,要求我有两种不同的客户端类型与同一服务器进行交互。
两个客户端中的一个比另一个客户端具有更多权限,这意味着第一个客户端是唯一可以调用某个方法的客户端。
让我们快速提供样本:
我们有3个班级:
服务器导出一个名为 doSomething()的方法,不能从 UserClient 调用,但只能从 >的AdminClient
有没有办法做这样的事情?
我知道,因为我编写代码,编写 UserClient 并阻止他调用该方法非常容易,但我要问如果可以修改客户端代码以调用 doSomething(),那么服务器端安全性就更多了。
doSomething()应该是:
void doSomething(){
Class caller = getCaller().getClass();
if (caller instanceof UserClient) return;
...
}
答案 0 :(得分:-1)
你不能。您的服务器不知道远程客户端是谁。
我建议将您的域逻辑置于2个不同的远程服务之后,一个实现UserInterface,另一个实现AdminInterface。将UserInterface存根分发给UserClient,将AdminInterface存根分发给AdminClient。