zoukankan      html  css  js  c++  java
  • spring security+freemarker获取登陆用户的信息

    spring security+freemarker获取登陆用户的信息

    目标页面之间获取

     ${Session.SPRING_SECURITY_CONTEXT.authentication.principal.username}

    其他参考

    Spring Security判断用户是否已经登录

    <c:if test="${pageContext.request.userPrincipal.name != null}">
        <label>
         Hi ${pageContext.request.userPrincipal.name} ! Welcome to our site
        </label>
    </c:if>
    
    <c:choose>
      <c:when test="${pageContext.request.userPrincipal.authenticated}">Show something</c:when>
      <c:otherwise>Show something else</c:otherwise>
    </c:choose>
    

      

    方法二、检查角色

    <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
        <sec:authorize access="hasAnyAuthority('ROLE_ADMIN', 'ROLE_USER')" var="isAuthenticated">
        </sec:authorize>
    
        <c:out value="${isAuthenticated}"/>
    

      

    和这个

    <sec:authorize access="hasAnyRole('ROLE_ADMIN')">
        <a href="delete/${file.id}">Delete</a>
    </sec:authorize>
    

      

    方法三、 还是查询用户

    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    if (!(auth instanceof AnonymousAuthenticationToken)) { 
         // do something...
    }
    

      

    方法四、 使用标签库

    <%@taglib uri="http://www.springframework.org/security/tags" prefix="sec"%>
    <sec:authorize access="isAuthenticated()">
        <% response.sendRedirect("main"); %>
    </sec:authorize>
    

      

    方法五、 使用注解

    需要:<global-method-security secured-annotations="enabled" />

    @Secured("ROLE_ADMIN")
    @RequestMapping(params = "onlyForAdmins")    
    public ModelAndView onlyForAdmins() {
        ....
    }
    
     @PreAuthorize("isAuthenticated()")
     @RequestMapping(params = "onlyForAuthenticated")
     public ModelAndView onlyForAuthenticatedUsers() {
         ....
     }
    

      

    方法六、 编程

    SecurityContextHolder.getContext().getAuthentication() != null &&
     SecurityContextHolder.getContext().getAuthentication().isAuthenticated() &&
     //when Anonymous Authentication is enabled
     !(SecurityContextHolder.getContext().getAuthentication() 
              instanceof AnonymousAuthenticationToken) 
    
    
    if (SecurityContextHolder.getContext().getAuthentication().isAuthenticated()) {
      System.out.println("LOGGED IN");
      } else {
      System.out.println("NOT LOGGED IN");
    }
    
    
    if (!SecurityContextHolder.getContext().getAuthentication().getName().
      equals("anonymousUser")) {
      System.out.println("LOGGED IN");
      } else {
      System.out.println("NOT LOGGED IN");
    }
    

      

    https://www.jianshu.com/p/70569b64f9a9

    https://blog.csdn.net/when_where_who/article/details/53610345

  • 相关阅读:
    51 Nod 1068 Bash游戏v3
    51 Nod Bash 游戏v2
    51 Nod 1073 约瑟夫环
    UVA 12063 Zeros and ones 一道需要好好体会的好题
    51 Nod 1161 Partial sums
    2018中国大学生程序设计竞赛
    UVA 11971 Polygon
    UVA 10900 So do you want to be a 2^n-aire?
    UVA 11346 Possibility
    python with as 的用法
  • 原文地址:https://www.cnblogs.com/achengmu/p/9708498.html
Copyright © 2011-2022 走看看