Để trả lời @wasimbhalli, có hai lý do tôi thấy rằng biểu thức sẽ luôn trả về false:
Tên vai trò phân biệt chữ hoa chữ thường. rendered="#{facesContext.externalContext.isUserInRole('ADMIN')}"
có thể trả về false
, nhưng hãy thử rendered="#{facesContext.externalContext.isUserInRole('admin')}"
hoặc rendered = "# {facesContext.externalContext.isUserInRole ('Admin')}".
Bạn phải xác định vai trò của mình trong cả hai web.xml
(hoặc dưới dạng chú thích) và ánh xạ nó trong glassfish-web.xml
.
Sau đây là làm thế nào để xác định một vai trò trong việc 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>
Sau đây là cách để lập bản đồ nhóm xác thực cho vai diễn trong glassfish-web.xml
.
<?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>
Trong thử nghiệm của tôi, cần phải lập bản đồ ngay cả khi tên giống nhau, như tôi thấy trong mã ví dụ của mình. Cũng trong thử nghiệm của tôi, tôi đã cố gắng chỉ xác định ánh xạ và chỉ để xác định vai trò trong web.xml
và không hoạt động. Tôi cần cả hai, như chỉ định tên vai trò trong trường hợp chính xác.
JSF 1.x hoặc 2.x? – BalusC
2.x, Glassfish 3.1 – TC1
Trong tương lai, vui lòng thêm thẻ '[jsf-2.0]' để chỉ ra rằng :) – BalusC