1

私は次のように見えるかもしれない方法Aを持っています:

public double A{
  if (secM == null) {
    secM = new SecurityManager();
    System.setSecurityManager(secM);
  }
  //do something and return a double

}

問題は、SecurityManagerが設定されると、プロジェクト全体に適用されることですが、このメソッドが含まれるクラスにのみ必要です。このメソッド/クラスのアクセス許可のみを確認するようにSecurityManagerに指示するにはどうすればよいですか。

4

1 に答える 1

3

SecurityManagerにどのようなアクションを防止させ、どのアクションを許可しますか?SecurityManagerは、単一のメソッドによるアクションではなく、任意のメソッドによる特定のアクションを制御するためによく使用されます。

ただし、コールスタックを調べるカスタムSecurityManagerを作成することで、後者も実行できます。例については、この回答を参照してください。これが必要ですか?

システム全体のSecurityManagerにアプリケーションに合わせたポリシーを提供できるため、ほとんどのことを許可できますが、アクションの小さなセットを防ぐことができます。制御できる権限はここにリストされています

更新:メソッドを別のクラスにプルすることで、これをよりエレガントに行うことができる場合があります。このクラスは、他のクラスとは別に(別のクラスローダーによって)ロードできます。この例を参照してください。次に、スタックトレース全体をチェックするのではなく、クラスローダーを使用して簡単なチェックを行うことができます。ただし、私はこのメソッドに精通していません-2つの別々のクラスローダーからのクラスが相互作用する必要がある場合は影響があるかもしれません...

于 2012-02-28T13:00:56.570 に答える