- All Implemented Interfaces:
FaceletHandler
The <sec:authorize> tag conditionally renders its content based on role-based access control
using SecurityContext. It provides three mutually exclusive ways to check user roles: single role check,
any-of-roles check, or all-of-roles check.
Usage
To use the security taglib, declare the omnifaces.security namespace in your Facelets view:
<html xmlns:sec="omnifaces.security">
The <sec:authorize> tag requires exactly one of the following attributes:
role, anyRole, or allRoles.
Single role check
Use the role attribute to check if the user has a specific role. The content will
only be rendered if the user has the specified role.
<sec:authorize role="ADMIN">
<h:link value="Admin Panel" outcome="/admin" />
</sec:authorize>
Any-of-roles check
Use the anyRole attribute with comma-separated role names to check if the user has
at least one of the specified roles. The content will be rendered if the user has any of the roles.
<sec:authorize anyRole="ADMIN, MODERATOR, EDITOR">
<h:link value="Content Management" outcome="/cms" />
</sec:authorize>
All-of-roles check
Use the allRoles attribute with comma-separated role names to check if the user has
all of the specified roles. The content will only be rendered if the user has all of the roles.
<sec:authorize allRoles="ADMIN, AUDITOR">
<h:link value="Audit Logs" outcome="/audit" />
</sec:authorize>
Exposing authorization result
The optional var attribute exposes the boolean authorization result as a view-scoped
variable. This is useful when you need to use the authorization result in multiple places without repeating the
role check.
<sec:authorize role="ADMIN" var="isAdmin" />
<h:panelGroup rendered="#{isAdmin}">
<h:link value="Admin Panel" outcome="/admin" />
</h:panelGroup>
<h:outputText value="Welcome, Administrator!" rendered="#{isAdmin}" />
The variable is always set regardless of whether the content inside the tag is rendered or not.
Configuration
This tag requires SecurityContext from jakarta.security.enterprise to be available. If the
security context is not available, a warning will be logged and no content will be rendered. Make sure your
application has Jakarta Security properly configured.
- Since:
- 5.0
- Author:
- Leonardo Bernardes (@redddcyclone), Bauke Scholtz
- See Also:
-
BaseSecurityTagHandlerAnonymousTagHandlerAuthenticatedTagHandler
-
Field Summary
Fields inherited from class jakarta.faces.view.facelets.TagHandler
nextHandler, tag, tagId -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidapply(FaceletContext context, UIComponent parent) protected Optional<SecurityContext>Retrieves the current SecurityContext from CDI.Methods inherited from class jakarta.faces.view.facelets.TagHandler
getAttribute, getRequiredAttribute, toString
-
Constructor Details
-
AuthorizeTagHandler
Constructor for the TagHandler- Parameters:
config- TagConfig
-
-
Method Details
-
apply
- Throws:
IOException
-
getSecurityContext
Retrieves the current SecurityContext from CDI. If the SecurityContext is not available, logs a warning and returns empty Optional.- Returns:
- Optional containing the SecurityContext, or empty if not available
-