私は最近、会社の Active Directory に関連付けられた宣言型セキュリティ (server.xml/web.xml) を使用する JSP で tomcat Web アプリを開発しました。駆け出しのプロジェクトに JSF サポートを追加するように依頼されました。ログイン フォームを jsf に変換するのは簡単なことで、セキュリティ モデルは引き続き機能します。
アソシエイトは、より多くの聴衆がレポートの 1 つを表示できるようにし、アクション ボタンを少数のグループにのみ表示できるかどうかを尋ねました。JSF は初めてなので、調査を行う必要がありました。
「jsfボタンのセキュリティ」や「jsfボタンのアクセス許可」などをグーグルで調べ、さまざまな提案を試みましたが、ほとんど行き止まりでした。別のアソシエイトは、Spring セキュリティ モデルの使用を提案していましたが、より簡単な方法があれば、たくさんの Spring ライブラリを扱いたくありませんでした。
やがて、信じられないほど簡単な答えにたどり着きました。HttpServletRequest メソッドの isUserInRole() を使用して、現在ログオンしているユーザーがアクション ボタンを表示する権限を持っているかどうかを判断するだけで済みました。過去 10 年間、私は HttpServletRequests をたくさん使用してきましたが、その方法について学んだことを思い出したことはありません。jsf を使用すると、以下に示すように、そのメソッドに到達するのは簡単です。
public boolean isUserInRole(String role) {
return (FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role));
}
私の質問は具体的には次のとおりです。このアプローチについて知っておくべき落とし穴はありますか?それを行うための別の簡単な方法はありますか?