All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.security.taglibs.authz.AuthenticationTag Maven / Gradle / Ivy

There is a newer version: 6.2.4
Show newest version
/*
 * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.security.taglibs.authz;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.util.TextEscapeUtils;

import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.BeansException;
import org.springframework.web.util.TagUtils;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * An {@link javax.servlet.jsp.tagext.Tag} implementation that allows convenient access to
 * the current Authentication object.
 * 

* Whilst JSPs can access the SecurityContext directly, this tag avoids * handling null conditions. * * @author Thomas Champagne */ public class AuthenticationTag extends TagSupport { // ~ Instance fields // ================================================================================================ private String var; private String property; private int scope; private boolean scopeSpecified; private boolean htmlEscape = true; // ~ Methods // ======================================================================================================== public AuthenticationTag() { init(); } // resets local state private void init() { var = null; scopeSpecified = false; scope = PageContext.PAGE_SCOPE; } public void setVar(String var) { this.var = var; } public void setProperty(String operation) { this.property = operation; } public void setScope(String scope) { this.scope = TagUtils.getScope(scope); this.scopeSpecified = true; } public int doStartTag() throws JspException { return super.doStartTag(); } public int doEndTag() throws JspException { Object result = null; // determine the value by... if (property != null) { if ((SecurityContextHolder.getContext() == null) || !(SecurityContextHolder.getContext() instanceof SecurityContext) || (SecurityContextHolder.getContext().getAuthentication() == null)) { return Tag.EVAL_PAGE; } Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth.getPrincipal() == null) { return Tag.EVAL_PAGE; } try { BeanWrapperImpl wrapper = new BeanWrapperImpl(auth); result = wrapper.getPropertyValue(property); } catch (BeansException e) { throw new JspException(e); } } if (var != null) { /* * Store the result, letting an IllegalArgumentException propagate back if the * scope is invalid (e.g., if an attempt is made to store something in the * session without any HttpSession existing). */ if (result != null) { pageContext.setAttribute(var, result, scope); } else { if (scopeSpecified) { pageContext.removeAttribute(var, scope); } else { pageContext.removeAttribute(var); } } } else { if (htmlEscape) { writeMessage(TextEscapeUtils.escapeEntities(String.valueOf(result))); } else { writeMessage(String.valueOf(result)); } } return EVAL_PAGE; } protected void writeMessage(String msg) throws JspException { try { pageContext.getOut().write(String.valueOf(msg)); } catch (IOException ioe) { throw new JspException(ioe); } } /** * Set HTML escaping for this tag, as boolean value. */ public void setHtmlEscape(String htmlEscape) throws JspException { this.htmlEscape = Boolean.valueOf(htmlEscape); } /** * Return the HTML escaping setting for this tag, or the default setting if not * overridden. */ protected boolean isHtmlEscape() { return htmlEscape; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy