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

  • 相关阅读:
    NodeJS、NPM安装配置步骤(windows版本)
    23种设计模式全解析
    js阻止浏览器默认事件
    js获取不同浏览器盒子宽度高度
    H5之重力感应篇
    JS中的call()和apply()方法
    html学习笔记
    less(css)语言快速入门
    power designer简单教程
    Strom开发配置手册
  • 原文地址:https://www.cnblogs.com/achengmu/p/9708498.html
Copyright © 2011-2022 走看看