找到哪个类称为远程方法

时间:2014-04-30 15:23:57

标签: java security permissions rmi

我正在学习 Java RMI ,而我正在尝试进行一项任务,要求我有两种不同的客户端类型与同一服务器进行交互。

两个客户端中的一个比另一个客户端具有更多权限,这意味着第一个客户端是唯一可以调用某个方法的客户端。

让我们快速提供样本:

我们有3个班级:

  • 服务器
  • 的AdminClient
  • UserClient

服务器导出一个名为 doSomething()的方法,不能 UserClient 调用,但只能从 >的AdminClient

有没有办法做这样的事情?

我知道,因为我编写代码,编写 UserClient 并阻止他调用该方法非常容易,但我要问如果可以修改客户端代码以调用 doSomething(),那么服务器端安全性就更多了。

doSomething()应该是:

void doSomething(){
    Class caller = getCaller().getClass();
    if (caller instanceof UserClient) return;
    ...
}

1 个答案:

答案 0 :(得分:-1)

你不能。您的服务器不知道远程客户端是谁。

我建议将您的域逻辑置于2个不同的远程服务之后,一个实现UserInterface,另一个实现AdminInterface。将UserInterface存根分发给UserClient,将AdminInterface存根分发给AdminClient。

相关问题