3

JSP ページから現在のユーザーのロールを読み取るには、どのようなオプションが必要ですか? Tomahawk コンポーネントの属性については認識していvisibleOnUserRole="myRole"ますが、単純な可視性よりももう少し複雑なことのためにロールが必要です。

4

2 に答える 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 に答える