0

ユーザーの役割に応じて、Webアプリでいくつかのリンクを非表示にしています...たとえば、役割が1のユーザーのリンクsample.jspを非表示にします。もちろんこれは非表示になりますが、このユーザーがリンクを知っていれば、最終的には移動できます。そのリンクへ...これを設定する方法は?

4

3 に答える 3

2

誰かがリンクが指すURLにアクセスしたら、認証されているかどうかを確認し(そうでない場合は、ログインページを表示します)、認証されているユーザーがページへのアクセスを許可されているかどうかを確認します(そうでない場合は、説明するエラーメッセージを表示します)。それと「別のユーザーとしてログイン」フォームを提供します)。

于 2013-02-10T13:10:46.843 に答える
1

Quentin の提案で十分です。デモ アプリを開発している場合は、おそらくそれで十分です。

しかし、堅牢な認証と承認の実装に真剣に取り組んでいる場合は、オープンソースのセキュリティ フレームワークを学ぶことを真剣に検討する必要があります。

これにより、特にカスタムでアプリのセキュリティを構築する場合に、多くの頭痛の種から解放される可能性があります。

于 2013-02-10T13:55:35.100 に答える
0

まず、Sudhakar によって提案された Apache Shiro や Spring Security など、魅力的なセキュリティ フレームワークを選択します。さまざまなセキュリティ フレームワークを理解するには、Matt Raible の 2011 年の概要 ( Spring SecurityApache Shiroなど) を参照してください。

次に、セキュリティ フレームワークを選択した場合は、Quentin の回答に非常に簡単に従うことができるはずです。

非常に基本的なスキームは、役割に基づいてページを論理グループに分割することです (これはいくつか必要です)。両方の管理者が にアクセスできるように、特定のユーザー ロールに対してページのセクションをレンダリングする場合は、より高度な設定が必要になりますが、削除ボタンは現在のユーザーのロールが管理者と等しい場合にのみレンダリングされます。アプリケーションをより安全に保護するために、選択するフレームワークは、ユーザー ロールに基づいてビジネス ロジック メソッドを保護する方法を提供する必要があります。ビューの作成を容易にするための特別なタグもあるかもしれません。/admin/users/editadmin/.../user/order/viewuser/.../user/edit<shiro:hasRole>、 シロを選ぶなら。

しかし、あなたの状況に対する基本的な解決策は<h:link rendered="#{currentUser.roleOne}"/>backing-bean methodpublic boolean isRoleOne() { return role.equals("1"); }です。もちろん、リンクが非表示になるだけですが、ユーザーは URL からページにアクセスできます。そのため、最終的には、フィルターのボイラープレート コードの多くを記述するか、広く受け入れられているセキュリティ フレームワークによって提案されたソリューションを使用することになります。

于 2013-02-11T16:38:02.297 に答える