0

CRUD jsf アプリケーションでは、所有者はレコードなどのオブジェクトを持っています。

所有者が自分で作成したオブジェクトのみを表示/編集/削除できるようにしたい。これを実現する 1 つの方法は、すべてのメソッドで、ログインしたユーザーによってオブジェクトが作成されたかどうかを確認することです。

多くの同様のメソッドとオブジェクトが存在する可能性があるため、使用する代わりに別のエレガント/自動の方法を使用したいと思います

if (selectedObject.owner == loggedUser)

すべてのメソッドのフレーズ。

可能ですか、可能であればどのように?

4

2 に答える 2

2

アクセス保護にアスペクト指向プログラミングを使用できます。

アクセス制限されたメソッドへのすべてのメソッド呼び出しをインターセプトし、アドバイスの前にチェックを適用し、失敗した場合は例外をスローするアスペクトを作成します。プログラムの構造に応じて、明示的な注釈を探すか、かなり一般的なポイントカットを使用します。

これにより、あなたは 1 つの中心的な場所に移動しますif (obj.owner.equals(loggedUser))が、もちろん、他のユーザーのアイテムをリストなどに含めないように注意する必要があります.

「その」Java アスペクトの実装はAspectJです。また、Spring フレームワークでも使用およびサポートされていますが、いずれにせよ既に使用している可能性があります: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html

于 2012-11-14T09:24:09.327 に答える
0

私があなただったら、ユーザーが承認されている場合にのみコンポーネントを表示します。

rendered={user.isOwner}

これをコンポーネントの属性として使用します。

于 2012-11-14T08:59:14.757 に答える