JSP ページから現在のユーザーのロールを読み取るには、どのようなオプションが必要ですか? Tomahawk コンポーネントの属性については認識していvisibleOnUserRole="myRole"
ますが、単純な可視性よりももう少し複雑なことのためにロールが必要です。
8748 次
2 に答える
7
ExternalContextは、ユーザーとロールの情報を公開します。
public class RolesAccess implements Serializable {
public String getUserPrincipalName() {
FacesContext context = FacesContext.getCurrentInstance();
Principal principal = context.getExternalContext().getUserPrincipal();
if(principal == null) {
return null;
}
return principal.getName();
}
public String getUser() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getExternalContext().getRemoteUser();
}
public boolean isManager() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getExternalContext().isUserInRole("manager");
}
}
サーブレットで JSF を使用している場合、この情報はHttpServletRequestによって公開される値にマップされます。
マネージド Bean を使用して、式言語を介してビューに値を公開できます。
<f:view>
<h:outputLabel value="#{rolesBean.userPrincipalName}" />
<h:outputLabel value="#{rolesBean.user}" />
<h:outputLabel value="#{rolesBean.manager}" />
</f:view>
于 2008-11-13T13:06:19.847 に答える
2
Java EE 6 (この質問が尋ねられた/回答された時点では利用できませんでした) ではrequest
、Facelets コードの変数から直接ロールをテストできます。これは超便利です。
例えば
<h:outputText value="hi, admin!" rendered="#{request.isUserInRole('Admin')}" />
于 2012-12-05T22:37:06.200 に答える