JSPでの許可の確認
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
許可の実装
手順4/4
ユーザーインターフェイスコンポーネントをアクセス許可チェックで簡単にラップする方法は既に説明しました。 このステップでは、残りを実装します。
UIで権限を確認する
アプリケーションの3つの領域へのアクセスを制限したいことを思い出してください。
- アプリケーションの上部にあるゲストブックタブ
- [ゲストブックの追加]ボタン
- エントリの追加ボタン
最初に、ゲストブックのタブを作成し、それらのアクセス許可を確認します。
-
/guestbookwebportlet/view.jsp
を開き、リクエストからguestbookId
を取得するスクリプトレットを見つけます。 このすぐ下に、次のコードを追加します。<aui:nav cssClass="nav-tabs"> <% List<Guestbook> guestbooks = GuestbookLocalServiceUtil.getGuestbooks(scopeGroupId); for (int i = 0; i < guestbooks.size(); i++) { Guestbook curGuestbook = guestbooks.get(i); String cssClass = StringPool.BLANK; if (curGuestbook.getGuestbookId() == guestbookId) { cssClass = "active"; } if (GuestbookModelPermission.contains( permissionChecker, curGuestbook.getGuestbookId(), "VIEW")) { %> <portlet:renderURL var="viewPageURL"> <portlet:param name="mvcPath" value="/guestbookwebportlet/view.jsp" /> <portlet:param name="guestbookId" value="<%=String.valueOf(curGuestbook.getGuestbookId())%>" /> </portlet:renderURL> <aui:nav-item cssClass="<%=cssClass%>" href="<%=viewPageURL%>" label="<%=HtmlUtil.escape(curGuestbook.getName())%>" /> <% } } %> </aui:nav>
このコードは、データベースからゲストブックのリストを取得し、それらを反復処理し、現在のユーザーのロールに対してそれぞれの許可を確認し、ユーザーがアクセスできるゲストブックをタブのリストに追加します。
これで、最初のアクセス許可チェックが実装されました。 ご覧のとおり、ヘルパークラスの静的メソッドのおかげで比較的簡単です。 上記のコードは、現在のユーザーがゲストブックに対して
VIEW
権限を持っている場合にのみタブを表示します。次に、[エントリの追加]ボタンにアクセス許可チェックを追加します。
-
<aui:button-row cssClass="guestbook-buttons">
という行までスクロールします。 この行のすぐ下に、次のコード行を追加して、ADD_ENTRY
許可を確認します。<c:if test='<%= GuestbookPermission.contains(permissionChecker, scopeGroupId, "ADD_ENTRY") %>'>
-
この後、
addEntryURL
と[エントリの追加]ボタンを作成するコードがあります。aui:button
タグの後、</aui:button-row>
タグの上に、<c:if>
ステートメントの終了タグを追加します。</c:if>
JSTLタグを使用して、[エントリの追加]ボタンのアクセス許可チェックを実装しました。
次に、Guestbook Adminポートレットのエントリによく似た entry_actions.jsp
を実装します。 これにより、ポートレットのアクションメニューを表示できるログインユーザーに表示されるオプションが決まります。 前と同じように、使用可能なアクションに対してアクセス許可をチェックする if
ステートメントで各 renderURL
ラップします。 これを行うには、次の手順を実行します。
-
src / main / resources / META-INF / resources / guestbookwebportlet
、entry_actions.jsp
というファイルを作成します。 -
このファイルに、次のコードを追加します。
<%@include file="../init.jsp"%> <% String mvcPath = ParamUtil.getString(request, "mvcPath"); ResultRow row = (ResultRow)request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW); Entry entry = (Entry)row.getObject(); %> <liferay-ui:icon-menu> <c:if test="<%= GuestbookEntryPermission.contains(permissionChecker, entry.getEntryId(), ActionKeys.UPDATE) %>"> <portlet:renderURL var="editURL"> <portlet:param name="entryId" value="<%= String.valueOf(entry.getEntryId()) %>" /> <portlet:param name="mvcPath" value="/guestbookwebportlet/edit_entry.jsp" /> </portlet:renderURL> <liferay-ui:icon image="edit" message="Edit" url="<%=editURL.toString() %>" /> </c:if> <c:if test="<%=GuestbookEntryPermission.contains(permissionChecker, entry.getEntryId(), ActionKeys.PERMISSIONS) %>"> <liferay-security:permissionsURL modelResource="<%= Entry.class.getName() %>" modelResourceDescription="<%= entry.getMessage() %>" resourcePrimKey="<%= String.valueOf(entry.getEntryId()) %>" var="permissionsURL" /> <liferay-ui:icon image="permissions" url="<%= permissionsURL %>" /> </c:if> <c:if test="<%=GuestbookEntryPermission.contains(permissionChecker, entry.getEntryId(), ActionKeys.DELETE) %>"> <portlet:actionURL name="deleteEntry" var="deleteURL"> <portlet:param name="entryId" value="<%= String.valueOf(entry.getEntryId()) %>" /> <portlet:param name="guestbookId" value="<%= String.valueOf(entry.getGuestbookId()) %>" /> </portlet:actionURL> <liferay-ui:icon-delete url="<%=deleteURL.toString() %>" /> </c:if> </liferay-ui:icon-menu>
このコードは、エンティティの更新、権限の設定、および削除を行うアクションボタンを定義します。 各ボタンは、権限チェックによって保護されています。 現在のユーザーが指定されたアクションを実行できない場合、アクションは表示されません。
-
最後に、
view.jsp
で、検索コンテナの最後の列としてentry_actions.jsp
を追加する必要があります。 検索コンテナ行を定義する行を見つけます。 次のようになります。<liferay-ui:search-container-row className="com.liferay.docs.guestbook.model.Entry" modelVar="entry">
その行の下には2つの列があります。 2番目の列の後に、3番目を追加します。
<liferay-ui:search-container-column-jsp path="/guestbookwebportlet/entry_actions.jsp" align="right" />
-
すべてのJSPファイルを保存します。
優れた\! これで、ゲストブックポートレットのすべての権限チェックが実装されました。
アプリケーションをテストするときは、リソースなしで作成したゲストブックエントリはアクセス許可では機能しないことに注意してください。 新しいゲストブックとエントリを追加して、さまざまなユーザーでアプリケーションをテストします。 管理ユーザーにはすべてのボタンが表示され、一般ユーザーには[エントリの追加]ボタンが表示され、ゲストにはボタンがまったく表示されません(ただし、ナビゲートできます)。
Guestbook Adminポートレットでも同じことができるかどうかを確認します。 できない場合でも心配しないでください。この学習パスの最後に、完成したプロジェクトへのリンクがあり、調査することができます。
すばらしいです\! 次のステップは、検索とインデックス作成をアプリケーションに統合することです。 これは、はるかに強力なものが来るための前提条件です。