spring security+freemarker获取登陆用户的信息
Spring 获取 用户 信息 登陆 Security freemarker
2023-09-14 08:57:51 时间
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
相关文章
- Spring获取properties文件中的属性
- spring-cloud微服务架构图
- 【Spring Boot】Spring Boot之两种引入spring boot maven依赖的方式
- 获取Application中的spring容器
- mybatis 整合spring之mapperLocations配置的问题
- spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)
- Spring Boot启动时数据库初始化spring.datasource(转)
- Spring Boot 2 快速教程:WebFlux 快速入门(二)
- Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错
- spring 学习2-Spring Configuration in detail
- [Spring boot] Autowired by name, by @Primary or by @Qualifier
- 监听器如何获取Spring配置文件
- spring boot: filter/interceptor/aop在获取request/method参数上的区别(spring boot 2.3.1)
- Spring读源码系列之AOP--06---AopProxy===>spring使用jdk和cglib生成代理对象的终极奥义
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
- 打造优美易用的API文档:Spring Cloud集成Knife4j指南
- 【最全】Spring Boot 实现分布式锁——这才是实现分布式锁的正确姿势!
- spring中自定义注解(annotation)与AOP中获取注解___使用aspectj的@Around注解实现用户操作和操作结果日志
- 学习Spring Boot:(三)配置文件
- spring cloud --- config 从git 获取文件【 可能是yml或 properties】遇到有相同字段的取值规则
- spring controller获取web前端post数据乱码解决
- Spring Boot 应用监控: Java获取 CPU,内存, JVM 内部运行状况代码
- 不用被动注入的方式, 主动从 Spring Boot 应用容器中的获取 Bean 的方法
- 解决com.alibaba.fastjson.JSONException: write javaBean error问题以及解决Spring Boot加入Shiro导致spring aop失效的问题
- 在spring MVC的controller中获取ServletConfig
- 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点
- 005-spring-data-elasticsearch 3.0.0.0使用【三】-spring-data之Spring数据扩展
- 009-Spring Boot 事件监听、监听器配置与方式、spring、Spring boot内置事件
- 001-Spring在代码中获取bean的几种方式
- JAX-RS介绍——Java API forRESTful WebServices,JAX-RS的目标是Web Services开发(这与HTML Web应用不同)而Spring MVC的目标则是Web应用开发
- Spring Cloud Alibaba微服务第14章之分库分表
- Spring Boot 配置日志输出等级