Tilesでのロールによる表示の切り替え
TilesのputAttributeタグに role 属性があり、ユーザーのroleにより切り替えられるようになっている。この仕組みが Acegi による認証でも使えるのか確認してみた。
認証は Struts2 のアクションで独自に行う - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク
<%@page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <%@ taglib prefix="s" uri="/struts-tags" %> <tiles:insertDefinition name="default.layout"> <tiles:putAttribute name="title">RoleSample</tiles:putAttribute> <tiles:putAttribute name="body" role="ROLE_USER"> ユーザーさんコンニチハ <= A </tiles:putAttribute> <tiles:putAttribute name="body" role="ROLE_ADMIN"> 管理者さんコンニチハ <= B </tiles:putAttribute> <tiles:putAttribute name="body" role="ROLE_ANONYMOUS"> ゲストさんコンニチハ <= C </tiles:putAttribute> </tiles:insertDefinition>
ROLE_USERのユーザーでアクセスした場合はAが、ROLE_ADMINを持つユーザーでアクセスした場合は B が表示された。ROLE_USER, ROLE_ADMIN 両方を持つ場合も B が表示される。
また、未ログインの場合はAcegiのフィルタ設定により、ROLE_ANONYMOUSを設定してもらっているので、 C が表示される。
Acegiのフィルター設定 - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク