JDBCRealm

Status
Nicht offen für weitere Antworten.

di3u

Mitglied
Tag zusammen,
folgendes Problem beschäftigt mich im Moment:

Ich habe eine Art Portalseite, welche mittels Tiles zusammengesetzt ist. Eines dieser Tiles beinhaltet nun eine durch die in der web.xml eingetragene security-constraints enthaltene JSP-Seite. Hier sollen dem eingeloggten (!) User also Informationen über z.B. seinen letzten Login oder was weiß ich angezeigt werden. Da beim initialen Aufruf der Seite der User aber noch nicht eingeloggt sein kann sollte also der Mechanismus greifen und dem User wird statt dessen die Login-Seite angezeigt.

Nun habe ich aber das Problem, dass aufgrund des Einbindens der Tiles meine eigentlich "verbotene" JSP-Seite gar nicht in der URL aufgerufen wird und ich somit auch kein Login-Formular angezeigt bekomme. Bei mir wird sofort der Inhalt der "verbotenen" Seite angezeigt.

Ich habe inzwischen schon über jsp:include anstatt von tiles:insert, über eine seperate Aktionklasse, über einen forward und einen redirect versucht mein Login-Formular angezeigt zu bekommen - NICHTS.

Vielleicht kann mir ja hier jemand weiterhelfen.
Nachfolgend noch ein paar Auszüge aus den rel. Dateien:

web.xml:
security-constraint>
<web-resource-collection>
<web-resource-name>TEST</web-resource-name>
<url-pattern>/jsp/layout/header.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/jsp/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>


struts-config:
<action path="/navigation" type="com.yourcompany.struts.action.NavigationAction">
<forward name="notLoggedIn" path="/jsp/layout/header.jsp" />
</action>



tiles-defs.xml:
<definition name="page.default" path="/jsp/layout/layout.jsp">
<put name="title" value="JDBCRealm" />
<put name="userNavigation" value="/navigation.do" />
<put name="footer" value="/jsp/layout/footer.jsp" />
<put name="navigation" value="/jsp/layout/navigation.jsp" />
</definition>


Navigation-Action:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {

String retVal = "notLoggedIn";
return mapping.findForward(retVal);
}
 

KSG9|sebastian

Top Contributor
Hm..meines Wissens zieht der AUTH nur wenn der entsprechende Servletfilter anspringt.
Du könntest in der Klasse über den RequestDispatcher die Seite anfordern. Dann müsste eigentlich der Filter ansprechen und die Loginseite kommen.
 

di3u

Mitglied
öhm...ehrlich gesagt kann ich mit dem "RequestDispatcher" nicht so wirklich viel anfangen.
Was ich inzwischen nachgegoogelt habe ist die eigentliche Implementierung:

Code:
RequestDispatcher dispatcher = context.getRequestDispatcher("/reload.htm");
dispatcher.forward(request, response);

Aber wie bau ich die in meine Action-Klasse ein? Stehe gerade etwas auf dem Schlauch :(
 

KSG9|sebastian

Top Contributor
in der Action:

Code:
RequestDispatcher rd = super.getServlet().getServletContext().getRequestDispatcher("/reload.htm");
dispatcher.forward(request, response);

Das war's dann schon :)
 

KSG9|sebastian

Top Contributor
Du musst halt noch ein
"return mapping.findForward(..)" dranhängen. Ist aber egal was da kommt da dass Forward nicht angezogen wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben