用于限制对方法的访问的唯一标识
Unique id to restrict access to methods
我有一个对象,我想限制对其某些方法的访问,以便只有该对象的创建者才能访问它们:
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);
这是好的做法还是糟糕的想法?
试图在用户可以执行任意 Java 代码的系统中实施访问控制是一个糟糕的主意。
这基本上是 Java applets 背后的想法,它已经被一遍又一遍地证明是很难做到正确的。
您需要确保有权访问该对象的用户不能使用反射等技巧来读取 UUID 字段。
我会质疑您实际上要解决什么问题,并找到一种更好的沙盒用户方法。
我有一个对象,我想限制对其某些方法的访问,以便只有该对象的创建者才能访问它们:
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);
这是好的做法还是糟糕的想法?
试图在用户可以执行任意 Java 代码的系统中实施访问控制是一个糟糕的主意。
这基本上是 Java applets 背后的想法,它已经被一遍又一遍地证明是很难做到正确的。
您需要确保有权访问该对象的用户不能使用反射等技巧来读取 UUID 字段。
我会质疑您实际上要解决什么问题,并找到一种更好的沙盒用户方法。