@wasimbhalliに応じて、私は式は常にfalseを返すことを発見した二つの理由があります。
は、ロール名は大文字と小文字が区別されます。 rendered="#{facesContext.externalContext.isUserInRole('ADMIN')}"
は、false
を返しますが、 rendered="#{facesContext.externalContext.isUserInRole('admin')}"
とするか、rendered = "#{facesContext.externalContext.isUserInRole( 'Admin')} 'を返すことがあります。
web.xml
(または注釈)の両方でロールを定義し、glassfish-web.xml
にマップする必要があります。次
は
glassfish-web.xml
にロールに認証グループをマップする方法で、次のweb.ml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<security-role>
<role-name>admin</role-name>
</security-role>
</web-app>
で役割を指定する方法です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<security-role-mapping>
<role-name>admin</role-name> <!-- name defined in web.xml or annotations -->
<group-name>admin</group-name><!-- name from authentication mechanism -->
</security-role-mapping>
</glassfish-web-app>
私のテストでは、例のコードで示したように、名前が同じであってもマッピングを行う必要がありました。また、私のテストでは、マッピングを定義するだけで、web.xml
にその役割を定義するだけで、どちらも機能しませんでした。私は両方とも、正しい場合に役割名を指定する必要がありました。
JSF 1.xまたは2.x? – BalusC
2.x、Glassfish 3.1 – TC1
将来的には、それを示す '[jsf-2.0]'タグを追加してください:) – BalusC