tile3、spring security、struts2 を使用しています。ユーザー数が異なり、それぞれ特定の役割があり、各役割は特定のメニューにアクセスできる必要があります。次の tile.xml ファイルがありますが、問題を解決するためにそれを変更する方法がわかりません。
私のコードの他の部分を提供する必要がある場合はお知らせください。
<tiles-definitions>
<definition name="baseLayout" template="/baseLayout.jsp">
<put-attribute name="title" value=""/>
<put-attribute name="header" value="/header.jsp"/>
<put-attribute name="menu" value=""/>
<put-attribute name="body" value=""/>
<put-attribute name="footer" value="/footer.jsp"/>
<put-attribute name="register" value="/register.jsp"/>
</definition>
<definition name="register1" extends="baseLayout">
<put-attribute name="menu" value="/menuAdmin.jsp"/>
<put-attribute name="body" value="/body.jsp"/>
</definition>
<definition name="register2" extends="baseLayout">
<put-attribute name="menu" value="/menuUser.jsp"/>
<put-attribute name="body" value="/body.jsp"/>
</definition>
.....
私のアプリケーションには多くの異なるページがあるため、ユーザーの役割ごとに要求ごとに個別の定義を作成する必要があります。たとえば、register という定義のみが存在し、メニュー属性はリクエスターの役割に基づいて動的に変化するか、または他の方法で簡単にする必要があります。
以下を使用して、各ロールのアクセス可能なセクションを定義しています
<http auto-config="true" access-denied-page="/notFound.jsp" use-expressions="true">
<intercept-url pattern="/Profile/view*" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/Search/view*" access="hasRole('ROLE_ADMIN')" />
<form-login login-page="/index"
authentication-failure-url="/index?error=1"
default-target-url="/default"/>
<logout logout-success-url="/index.jsp"/>
</http>
次のコードを使用して、ログインしているユーザーの役割を見つけることができます
@Action
public class Default {
public String execute(){
String role =
SecurityContextHolder.getContext().getAuthentication().getAuthorities().toString();
System.out.println("User's role:"+role);
if(role.equalsIgnoreCase("[ROLE_ADMIN]"))
return "Admin";
return "";
}
}