Announcement

Collapse
No announcement yet.

Anzeige Inhalt in Abhängigkeit von MEHREREN Rollen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzeige Inhalt in Abhängigkeit von MEHREREN Rollen

    Hallo,

    in einer Strus Anwendung habe ich eine Downloadseite wo man diverse Resourcen herunterladen soll.
    Einzelne Dateien sollen nur Nutzern mit bestimmten Rollen zugänglich sein. Die entsprechenden <security-constraint> etc. Elemente habe ich in der web.xml angelegt.

    Die Dateien sollen nun auf der Downloadseite gar nicht erst erscheinen wenn der Nutzer keine Berechtigungen dafür hat.

    Ich verwendete daher die Request Taglib
    http://jakarta.apache.org/taglibs/doc/request-doc/intro.html

    <req:isUserInRole role="admin">
    <a href="download/admin.txt">Anleitung</a>
    </req:isUserInRole>

    Bis dahin funktioniert es. Nun sollen aber manche Dateien für mehrere Rollen zugänglich sein. Leider unterstützt isUserInRole das nicht wie ich nun leider feststellen musste.

    Ich bin schon längere Zeit am Überlegen wie ich das elegant d.h. ohne Scriptlets lösen könnte.
    Irgendwie müsste man doch die Logic-Tag-Library von Struts mit
    <req:isUserInRole role="admin"> und <req:isUserInRole role="projectmgr"> kombinieren können?
    Ich weiß nun aber nicht wie ich das anstelle. Ich bräuchte sowas wie 'ODER' aber das gibt es offenbar nicht in der Struts Taglib was mich sehr wundert oder geht das sonst viel einfacher?

    Vielen Dank!

    Grüsse
    Gitta

  • #2
    Hi Gitta,
    ich hab mir grad mal den Quelltext, der hinter dem Tag steht (public class IsUserInRoleTag extends TagSupport), angeschaut. Der ist wirklich ganz simpel. Folgende Änderungen müsstest Du machen, um den Tag dazu zu bewegen, statt einer Rolle eine Komma-getrennte Liste von Rollen zu verarbeiten:<br>
    - Das Feld <i>private String role = null;</i> durch eine Collection oder einen Array ersetzen<br>
    - in der Methode <i>public final void setRole(String str)</i> den Parameter str parsen und alle Werte zwischen den Kommas in die Collection/den Array speichern.<br>
    - in der Methode <i>public final int doStartTag() throws JspException</i> statt auf nur einen String zu prüfen, durch die Collection/den Array iterieren.<br>
    Da Du weder die Signatur irgendeiner Methode, noch den Namen des Tags geändert hast, kannst Du ein neues Jar bauen und die erweiterte Funktionalität ohne weitere Änderungen benutzen.<br>
    Wenns des gemacht hast, kannst Du den Code ja noch an Glenn Nielsen schicken, vielleicht baut ders ein und du kannst allen sagen, Du hättest an einem Jakarta-Projekt mitprogrammiert
    http://www.winfonet.eu

    Comment

    Working...
    X