我有一个DocumentEntityProxy,其中包含以下方法:
String getAttribute1();
void setAttribute1(String s);
String getAttribute2();
void setAttribute2(String s);
String getAttribute3();
void setAttribute3(String s);
我想要实现的是,如果您是标准用户,则只能使用getAttribute1()和setAttribute1(),如果您是管理员用户,则可以使用所有方法。在这个例子中,我只有三个属性和两种不同类型的用户,但在一个真实的项目中,当然还有很多。
实现这一目标的最佳方法是什么?
提前感谢您的帮助。
答案 0 :(得分:0)
你可以使用inhertance:
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注释。