diff --git a/itest/web/src/main/webapp/WEB-INF/security.tld b/itest/web/src/main/webapp/WEB-INF/security.tld index 77dfe18287..58bc7657d6 100644 --- a/itest/web/src/main/webapp/WEB-INF/security.tld +++ b/itest/web/src/main/webapp/WEB-INF/security.tld @@ -13,7 +13,7 @@ authorize - org.springframework.security.taglibs.authz.AuthorizeTag + org.springframework.security.taglibs.authz.JspAuthorizeTag A tag which outputs the body of the tag if the configured access expression evaluates to true for the currently authenticated principal. diff --git a/taglibs/src/main/java/org/springframework/security/taglibs/authz/JspAuthorizeTag.java b/taglibs/src/main/java/org/springframework/security/taglibs/authz/JspAuthorizeTag.java index fe4870780e..e4eb449033 100644 --- a/taglibs/src/main/java/org/springframework/security/taglibs/authz/JspAuthorizeTag.java +++ b/taglibs/src/main/java/org/springframework/security/taglibs/authz/JspAuthorizeTag.java @@ -24,10 +24,12 @@ public class JspAuthorizeTag extends AbstractAuthorizeTag implements Tag { private Tag parent; - protected String id; - protected PageContext pageContext; + protected String id; + + private String var; + /** * Invokes the base class {@link AbstractAuthorizeTag#authorize()} method to * decide if the body of the tag should be skipped or not. @@ -40,7 +42,13 @@ public class JspAuthorizeTag extends AbstractAuthorizeTag implements Tag { setIfAllGranted(ExpressionEvaluationUtils.evaluateString("ifAllGranted", getIfAllGranted(), pageContext)); setIfAnyGranted(ExpressionEvaluationUtils.evaluateString("ifAnyGranted", getIfAnyGranted(), pageContext)); - return super.authorize() ? Tag.EVAL_BODY_INCLUDE : Tag.SKIP_BODY; + int result = super.authorize() ? Tag.EVAL_BODY_INCLUDE : Tag.SKIP_BODY; + + if (var != null) { + pageContext.setAttribute(var, Boolean.valueOf(result == EVAL_BODY_INCLUDE), PageContext.PAGE_SCOPE); + } + + return result; } catch (IOException e) { throw new JspException(e); @@ -73,6 +81,14 @@ public class JspAuthorizeTag extends AbstractAuthorizeTag implements Tag { public void setParent(Tag parent) { this.parent = parent; } + + public String getVar() { + return var; + } + + public void setVar(String var) { + this.var = var; + } public void release() { parent = null;