0

次のメソッドを持つ DocumentEntityProxy が 1 つあります。

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

私が達成したいのは、標準ユーザーの場合は getAttribute1() と setAttribute1() のみを使用でき、管理ユーザーの場合はすべてのメソッドを使用できるということです。この例では、3 つの属性と 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);
}

エンティティ タイプへのアクセスを保護するために、2 つのファインダー メソッド (userEntity または adminEntity を返す) を使用し、SpringSecurity の @Secured アノテーションなどを使用して、バックエンドでメソッドへのアクセスを制限できます。

于 2012-07-04T08:16:53.280 に答える