Frage

Ich möchte Inhalt für jeden Benutzer zeigen, die angemeldet ist und sich zu verstecken, wenn sie nicht eingeloggt sind. Ich bin mit jsp der und Feder Sicherheit.

Offensichtlich eine home grown-Lösung ist leicht getan. Aber was ist der sauberste Standard Weg, um dies zu erreichen?

Frühling Sicherheitsetikett nicht scheinen nette Art zu haben, die für die Zugabe von neuen Rollen in der Zukunft ermöglichen.

War es hilfreich?

Lösung

Ich habe Erfolg gehabt mit dem folgenden:

    <sec:authorize ifAnyGranted="ROLE_ANONYMOUS">
        <td><a href="<c:url value="/login.htm"/>">Login</a></td>
    </sec:authorize>
    <sec:authorize ifNotGranted="ROLE_ANONYMOUS">
        <td><a href="<c:url value="/j_spring_security_logout"/>">Logout</a></td>
    </sec:authorize>

Neue Rollen können, ohne die Logik hier hinzugefügt werden.


Sie diese Antwort Mitzubringen Spring Security auf dem Laufenden 3, die isAnonymous() und isAuthenticated() Ausdrücke haben sich gut in Kombination arbeitete bisher das Gleiche zu erreichen. Hier ein Beispiel:

<sec:authorize access="isAnonymous()">
    <form method="POST" action="<c:url value='j_spring_security_check'/>">
        Username: <input name="j_username" type="text" value="${SPRING_SECURITY_LAST_USERNAME}" /> 
        Password: <input name="j_password" type="password" /> 
        <input type="submit" value="Sign in" />
    </form>
</sec:authorize>
<sec:authorize access="isAuthenticated()">
    <a href="<c:url value="/j_spring_security_logout" />">Logout</a>
</sec:authorize>

Andere Tipps

Die aktuelle Version (3.1 vielleicht sogar früher) unterstützt var-Parameter für das Ergebnis in ein Attribut zu speichern. Damit können Sie den folgenden Code ein:

<sec:authorize var="loggedIn" access="isAuthenticated()" />
<c:choose>
    <c:when test="${loggedIn}">
        You are loged in
    </c:when>
    <c:otherwise>
        You are logged out
    </c:otherwise>
</c:choose>

Sie können Frühling EL im Tag <sec:authorize /> verwenden, wie folgt aus:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

<sec:authorize access="isAuthenticated()">
   YES, you are logged in!
</sec:authorize>

Wie wäre das? - Spring 2.5 kompatibel; -)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>

<security:authorize ifAllGranted="ROLE_USER">
   Welcome <%= request.getUserPrincipal().getName() %>
   <a href="<c:url value="/j_spring_security_logout"/>">Logout</a><br/>
</security:authorize>

Wie wäre:

<%@ taglib uri="http://acegisecurity.org/authz" prefix="authz" %>

<c:set var="authenticated" value="${false}"/>
<authz:authorize ifAllGranted="ROLE_USER">
    <c:set var="authenticated" value="${true}"/>
</authz:authorize>

<c:if test="${authenticated}">
<!-- your secure content here -->
</c:if>

die einfachste i verwendet, um dieses zu kodieren ...

<%
if (request.getRemoteUser()== null) {%>  
    <!-- put public-only information-->
<%}%>

Hier ist, wie ich das tue:

<%@ page import="org.springframework.security.context.SecurityContextHolder" %>

<c:if test="<%=SecurityContextHolder.getContext().getAuthentication() != null %>">
    <!-- your secure content here -->
</c:if>

Lassen Sie mich wissen, ob das funktioniert auch für Sie ...

-AJ

Sie können diese innerhalb jsp Federsicherheits-Tag

request.getUserPrincipal().getName()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top