0

我有一个具有以下方法的 DocumentEntityProxy:

String getAttribute1();
void setAttribute1(String s);
String getAttribute2();
void setAttribute2(String s);
String getAttribute3();
void setAttribute3(String s);

我想要实现的是,如果您是标准用户,则只能使用 getAttribute1() 和 setAttribute1() 如果您是管理员用户,则可以使用所有方法。在这个例子中,我只有三个属性和 2 个不同类型的用户,但在实际项目中当然还有更多。

实现这一目标的最佳方法是什么?

在此先感谢您的帮助。

4

1 回答 1

0

您可以使用继承:

class UserEntity {
  String getAttribute1() { }
  void setAttribute1(String s) { }
}

class AdminEntity extends UserEntity {
  String getAttribute2() { }
  void setAttribute2(String s) { }
}

和代理:

@ProxyFor(UserEntity.class)
interface UserEntityProxy extends EntityProxy {
  String getAttribute1();
  void setAttribute1(String s);
}

@ProxyFor(AdminEntity.class)
interface AdminEntityProxy extends UserEntityProxy {
  String getAttribute2();
  void setAttribute2(String s);
}

为了保护对实体类型的访问,您可以使用两个查找器方法(返回 userEntity 或 adminEntity)并限制对后端方法的访问,例如使用 SpringSecurity 的 @Secured 注释。

于 2012-07-04T08:16:53.280 回答