Java Web Services via REST bereitstellen
ulrich
2014-11-16 ac059cdc92b9b9cbfc47850dded547dd2f206325
src/de/uhilger/transit/web/Waechter.java
@@ -15,7 +15,6 @@
    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package de.uhilger.transit.web;
import java.security.*;
@@ -34,22 +33,28 @@
import javax.servlet.http.HttpServletResponse;
/**
 * Ein Filter zur Pruefung von Berechtigungen zum Einsatz in einer
 * Java EE konformen Webanwendung. Zum Einbau wird diese Klasse
 * im Deployment Desciptor (web.xml) deklariert.
 * Ein Filter zur Pruefung von Berechtigungen zum Einsatz in einer Java EE
 * konformen Webanwendung. Zum Einbau wird diese Klasse im Deployment Desciptor
 * (web.xml) deklariert.
 * 
 * @author Copyright (c) Ulrich Hilger, http://uhilger.de
 * @author Published under the terms and conditions of
 * the <a href="http://www.gnu.org/licenses/agpl-3.0" target="_blank">GNU Affero General Public License</a>
 * @author Published under the terms and conditions of the
 * <a href="http://www.gnu.org/licenses/agpl-3.0" target="_blank">GNU Affero
 * General Public License</a>
 * 
 * @version 1, September 16, 2012
 */
public class Waechter implements Filter {
  
  /** Name, der als Benutzername verwendet wird, wenn kein Benutzer angemeldet ist */
  /**
   * Name, der als Benutzername verwendet wird, wenn kein Benutzer angemeldet
   * ist
   */
  public static final String ANONYMER_NUTZER = "anonymous";
  
  /** Das Objekt zur Pruefung von Berechtigungen */
  /**
   * Das Objekt zur Pruefung von Berechtigungen
   */
  protected RechtePruefer rechtePruefer;
  
  protected String className;
@@ -57,13 +62,12 @@
  protected String userName;
  
  /**
   * Pruefen, ob der zur Zeit angemeldete Benutzer eine HTTP-Anfrage
   * ausfuehren darf, die einen Methodenaufruf der Klassenbibliothek
   * Transit enthaelt.
   * Pruefen, ob der zur Zeit angemeldete Benutzer eine HTTP-Anfrage ausfuehren
   * darf, die einen Methodenaufruf der Klassenbibliothek Transit enthaelt.
   * 
   * Anfragen, die berechtigt sind, werden zur Verarbeitung weiter gereicht.
   * Ist eine Anfrage nicht berechtigt, wird die Anfrage nicht weiter
   * gereicht und eine Servlet Exception erzeugt.
   * Anfragen, die berechtigt sind, werden zur Verarbeitung weiter gereicht. Ist
   * eine Anfrage nicht berechtigt, wird die Anfrage nicht weiter gereicht und
   * eine Servlet Exception erzeugt.
   * 
   * @param request die zu pruefende Anfrage
   * @param response die Antowrt des Servers
@@ -80,8 +84,8 @@
      if(rechtePruefer.istErlaubt(request, response, className, methodName, userName)) {
        chain.doFilter(request, response);
      } else {
        throw new ServletException("Der Benutzer " + userName +
        " darf die Methode " + className + "." + methodName + " nicht ausfuehren.");
        throw new ServletException("Der Benutzer " + userName
                + " darf die Methode " + className + "." + methodName + " nicht ausfuehren.");
      }
    }
  }
@@ -104,8 +108,8 @@
   * Den Namen des angemeldeten Benutzers ermitteln.
   * 
   * @param req  die Anfrage, deren Benutzer ermittelt werden soll
   * @return Name des Benutzers oder <code>anonymous</code>, wenn
   * kein Benutzer angemeldet ist
   * @return Name des Benutzers oder <code>anonymous</code>, wenn kein Benutzer
   * angemeldet ist
   */
  public static String getUserName(HttpServletRequest req) {
    String userName = null;
@@ -122,8 +126,8 @@
  /**
   * Diesen Filter initialisieren
   * 
   * @param config die Konfiguration, die zur Initialisierung
   * verwendet werden soll
   * @param config die Konfiguration, die zur Initialisierung verwendet werden
   * soll
   */
  public void init(FilterConfig config) {
    try {
@@ -135,24 +139,26 @@
          if(p != null && p instanceof RechtePruefer) {
            this.rechtePruefer = (RechtePruefer) p;
          } else {
            rechteDbSetzen(config);
            //rechteDbSetzen(config);
            this.rechtePruefer = new StandardRechtePruefer();
          }
        } else {
          rechteDbSetzen(config);
          //rechteDbSetzen(config);
          this.rechtePruefer = new StandardRechtePruefer();
        }
      } else {
        rechteDbSetzen(config);
        //rechteDbSetzen(config);
        this.rechtePruefer = new StandardRechtePruefer();
      }
    } catch(Exception e) {}
    } catch (Exception e) {
    }
  }
  
  private void rechteDbSetzen(FilterConfig config) {
  /*private void rechteDbSetzen(FilterConfig config) {
    this.rechtePruefer = new RechteDb(config.getInitParameter("dataSource"));
  }
   }*/
  /**
   * Diesen Filter vernichten (vom Filter verwendete Ressourcen
   * frei geben usw.)
   * Diesen Filter vernichten (vom Filter verwendete Ressourcen frei geben usw.)
   */
  public void destroy() {
    this.rechtePruefer = null;