복붙노트

[SPRING] 스프링 보안으로 로그인 한 사용자에게 조건 적으로 JSP 컨텐츠를 표시하는 방법

SPRING

스프링 보안으로 로그인 한 사용자에게 조건 적으로 JSP 컨텐츠를 표시하는 방법

로그인 한 모든 사용자에게 콘텐츠를 표시하고 로그인하지 않을 경우 숨기려고합니다. jsp 및 스프링 보안을 사용하고 있습니다.

분명히 가정에서 자란 솔루션은 쉽게 완성됩니다. 그러나 이것을 달성하는 가장 깨끗한 표준 방법은 무엇입니까?

스프링 보안 태그는 미래에 새로운 역할을 추가 할 수있는 좋은 방법이 아닙니다.

해결법

  1. ==============================

    1.나는 다음과 같은 성공을 거두었 다.

    나는 다음과 같은 성공을 거두었 다.

        <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>
    

    논리에 영향을주지 않고 새로운 역할을 추가 할 수 있습니다.

    이 답변을 Spring Security 3에서 최신 상태로 유지하려면 isAnonymous () 및 isAuthenticated () 표현식을 사용하여 지금까지 동일한 작업을 수행하는 것이 좋습니다. 다음은 그 예입니다.

    <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>
    
  2. ==============================

    2.현재 버전 (아마도 3.1 이전 버전)은 결과를 속성에 저장하기위한 var 매개 변수를 지원합니다. 이를 통해 다음을 코딩 할 수 있습니다.

    현재 버전 (아마도 3.1 이전 버전)은 결과를 속성에 저장하기위한 var 매개 변수를 지원합니다. 이를 통해 다음을 코딩 할 수 있습니다.

    <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>
    
  3. ==============================

    3.다음과 같이 Spring EL을 태그에 사용할 수 있습니다.

    다음과 같이 Spring EL을 태그에 사용할 수 있습니다.

    <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
    
    <sec:authorize access="isAuthenticated()">
       YES, you are logged in!
    </sec:authorize>
    
  4. ==============================

    4.이게 어때? - Spring 2.5 호환 ;-)

    이게 어때? - Spring 2.5 호환 ;-)

    <%@ 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>
    
  5. ==============================

    5.어때?

    어때?

    <%@ 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>
    
  6. ==============================

    6.가장 단순한 것은 이것을 코딩하는 데 사용되었습니다 ...

    가장 단순한 것은 이것을 코딩하는 데 사용되었습니다 ...

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

    7.다음은이 작업을 수행하는 방법입니다.

    다음은이 작업을 수행하는 방법입니다.

    <%@ page import="org.springframework.security.context.SecurityContextHolder" %>
    
    <c:if test="<%=SecurityContextHolder.getContext().getAuthentication() != null %>">
        <!-- your secure content here -->
    </c:if>
    

    이게 너에게 효과가 있는지 알려줘.

    -aj

  8. ==============================

    8.당신은 jsp spring security 태그 안에 이것을 사용할 수 있습니다.

    당신은 jsp spring security 태그 안에 이것을 사용할 수 있습니다.

    request.getUserPrincipal().getName()
    
  9. from https://stackoverflow.com/questions/1638170/how-to-conditionally-show-jsp-content-to-logged-in-users-with-spring-security by cc-by-sa and MIT license