ユーザーの役割に応じて、Webアプリでいくつかのリンクを非表示にしています...たとえば、役割が1のユーザーのリンクsample.jspを非表示にします。もちろんこれは非表示になりますが、このユーザーがリンクを知っていれば、最終的には移動できます。そのリンクへ...これを設定する方法は?
3 に答える
誰かがリンクが指すURLにアクセスしたら、認証されているかどうかを確認し(そうでない場合は、ログインページを表示します)、認証されているユーザーがページへのアクセスを許可されているかどうかを確認します(そうでない場合は、説明するエラーメッセージを表示します)。それと「別のユーザーとしてログイン」フォームを提供します)。
まず、Sudhakar によって提案された Apache Shiro や Spring Security など、魅力的なセキュリティ フレームワークを選択します。さまざまなセキュリティ フレームワークを理解するには、Matt Raible の 2011 年の概要 ( Spring SecurityとApache Shiroなど) を参照してください。
次に、セキュリティ フレームワークを選択した場合は、Quentin の回答に非常に簡単に従うことができるはずです。
非常に基本的なスキームは、役割に基づいてページを論理グループに分割することです (これはいくつか必要です)。両方の管理者が にアクセスできるように、特定のユーザー ロールに対してページのセクションをレンダリングする場合は、より高度な設定が必要になりますが、削除ボタンは現在のユーザーのロールが管理者と等しい場合にのみレンダリングされます。アプリケーションをより安全に保護するために、選択するフレームワークは、ユーザー ロールに基づいてビジネス ロジック メソッドを保護する方法を提供する必要があります。ビューの作成を容易にするための特別なタグもあるかもしれません。/admin/users/edit
admin/...
/user/order/view
user/...
/user/edit
<shiro:hasRole>
、 シロを選ぶなら。
しかし、あなたの状況に対する基本的な解決策は<h:link rendered="#{currentUser.roleOne}"/>
backing-bean methodpublic boolean isRoleOne() { return role.equals("1"); }
です。もちろん、リンクが非表示になるだけですが、ユーザーは URL からページにアクセスできます。そのため、最終的には、フィルターのボイラープレート コードの多くを記述するか、広く受け入れられているセキュリティ フレームワークによって提案されたソリューションを使用することになります。