2016-08-31 6 views
0

방법에 대한 액세스를 제한하고 개체의 작성자 만이 액세스 할 수 있도록 나는 그것의 방법 중 일부에 대한 액세스를 제한하려는 :고유 ID는 내가 객체를

class RestrictedObject { 

    private final UUID id; 

    public RestrictedObject(UUID id) { 
     this.id = id; 
    } 

    public boolean restrictedMethod(UUID anId) { 
     if (anId.equals(this.id)) { 
      //do stuff 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

객체의 생성자는이 작업을 수행 할 것 :

UUID id = UUID.randomUUID(); 
RestrictedObject o = new RestrictedObject(id); 
o.restrictedMethod(id); 

이것은 좋은 연습이나 끔찍한 생각입니까?

+0

대체로 더 나은 대안은 개체의 변경 불가능한보기 만 공유하는 것입니다. 예를 들어, 생성자는'obj = new RestrictedObject()'를 수행 한 다음 제한된 객체를 공유 할 때'return new NonModifiableRestrictedObject (obj);를 수행 할 것입니다. 'NonModifiableRestrictedObject'는 제한된 객체를 공유 할 때 제한된 객체를 제외한 모든 메소드를 허용하지 않는 래퍼입니다. 방법. – aioobe

답변

2

사용자가 임의의 Java 코드를 실행할 수있는 시스템에서 액세스 제어를 시행하려는 시도는 끔찍한 생각입니다.
기본적으로 Java 애플릿의이면에있는 아이디어입니다. 올바르게 진행하기가 어렵다는 것을 반복해서 보여주었습니다.
개체에 액세스 할 수있는 사용자가 리플렉션과 같은 트릭을 사용하여 UUID 필드를 읽을 수 없도록해야합니다.
나는 실제로 어떤 문제를 해결하고 사용자를 샌드 박스로 만드는 더 좋은 방법을 찾으려고하는지 질문합니다.

관련 문제