首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在freemarker模板中从当前会话中获取当前已验证的用户

在FreeMarker模板中,您可以使用内置的Session对象来访问当前会话

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title>Welcome!</title>
</head>
<body>
    <h1>Welcome, ${session.user.name}!</h1>
</body>
</html>

在这个例子中,我们直接使用了${session.user.name}来获取当前已验证用户的名称。请注意,您可能需要根据实际情况调整属性名称,例如,如果您的用户对象存储在名为currentUser的属性中,那么您需要使用${session.currentUser.name}

如果您在Java代码中使用了Spring Security,您可以通过以下方式在FreeMarker模板中获取当前已验证的用户:

  1. 首先,确保在Spring配置中启用了Spring Security支持。
  2. 然后,在FreeMarker配置中,添加以下内容以将Spring Security的Principal对象暴露给FreeMarker模板:
代码语言:javascript
复制
@Bean
public FreeMarkerConfigurer freemarkerConfig() {
    FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
    configurer.setTemplateLoaderPath("/WEB-INF/views/");
    Map<String, Object> sharedVariables = new HashMap<>();
    sharedVariables.put("principal", (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
    configurer.setFreemarkerVariables(sharedVariables);
    return configurer;
}
  1. 最后,在FreeMarker模板中,您可以使用${principal}来访问当前已验证的用户对象。例如,要显示用户的名称,可以使用${principal.username}
代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title>Welcome!</title>
</head>
<body>
    <h1>Welcome, ${principal.username}!</h1>
</body>
</html>

请根据您的实际情况调整代码示例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Springsecurity从当前请求对象中获取用户信息

从当前请求对象中获取用户信息 @RequestMapping("/authentication") public void authentication(Authentication authentication...的请求参数都是当前请求HttpServletRequest带来的,Authentication Principal也是HttpServletRequest带来的,在Controller层我们拿到的是HttpServletRequest..."SecurityContextHolderAwareRequestWrapper[ " + this.getRequest() + "]"; } } getAuthentication: 获取当前登录对象...Authentication 不是匿名返回 是匿名返回null getRemoteUser: 返回当前登录的用户名 即Authentication中的Principal信息 getUserPrincipal...是在过滤器链SecurityContextHolderAwareRequestFilter中实现的,SecurityContextHolderAwareRequestFilter主要作用就是对HttpServletRequest

2.9K20
  • 这可能是最全的Shiro入门(整合SSM)

    2.3、基本功能 Authentication 身份认证/登录,验证用户是不是拥有相应的身份; Authorization 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用 户是否能做事情...或者细粒度的验证某个用 户对某个资源是否具有某个权限; SessionManager 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信 息都在会话中;会话可以是普通JavaSE环境的,也可以是如...验证用户是否拥有资源角色; 如:/admin/*=roles[admin] perms:权限授权过滤器,验证用户是否拥有资源权限; 如:/employee/input=perms[“user:update...”] logout:注销过滤器 如: /logout=logout 三、认证 3.1、认证 认证的过程即为用户的身份确认过程,所实现的功能就是我们所熟悉的登录验证,用户输入账号和密码提交到后台,... 4.8.5.3.5、hasAnyRoles 标签 hasAnyRoles标签表示验证当前用户是否拥有这些角色中的任何一个,角色之间逗号分隔。

    2.2K12

    FreeMarker与JSP 2.0 + JSTL组合进行比较

    FreeMarker不直接从文件系统路径加载模板。...知道当您从另一个模板中包含/导入模板时,如果您没有启动模板名称/,它将相对于包含模板的目录进行解释。错误消息包含完整(已解析)的名称,因此您应该注意到这一点。...16.如何在FreeMarker模板中修改序列(列表)和哈希(映射)? 首先,您可能不想修改序列/散列,只需连接(添加)两个或更多的,这将导致新的序列/散列,而不是修改现有的序列/散列。...FreeMarker尝试防止在模板根目录之外加载文件,而不管模板加载程序如何,但根据底层存储机制,FreeMarker无法考虑使用漏洞(例如, ~跳转到当前用户的主目录)。...在我的基于Servlet的应用程序中,如何在模板处理过程中发生错误时,如何显示一个漂亮的错误页面而不是堆栈跟踪?

    5.5K40

    shiro框架是什么_中国历史知识框架

    架构是怎样的 主要认识: Subject(用户):当前的操作用户 获取当前用户Subject currentUser = SecurityUtils.getSubject() SecurityManager...("权限表达式1","权限表达式2") 自定义realm — 授权 思路: 1.获取当前登录用户的id/name //获取当前登录用户对象 ,登录传过来的第一个参数 方式一 :principals.getPrimaryPrincipal...,先经过权限拦截器,进行鉴权操作 1.获取当前登录用户权限表达式集合 2.获取当前请求映射方法头顶上权限表达式 3.判断用户权限表达式集合中是否包含该表达式 Shiro 权限验证三种方式 编程式 注解式...-- 配置 FreeMarker 寻找模板的路径 --> hasAnyRoles 标签:验证当前用户是否拥有这些角色中的任何一个,角色之间逗号分隔 Hello admin</

    53360

    spring boot整合shiro_Spring框架介绍及使用

    Authentication:身份认证/登录,验证用户是不是拥有相应的身份 Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能进行什么操作,如:验证某个用户是否拥有某个角色...或者细粒度的验证某个用户对某个资源是否具有某个权限 Session Management:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境...Subject 代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;与Subject 的所有交互都会委托给SecurityManager;...Subject;可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,它相当于SpringMVC中DispatcherServlet的角色 Realm:Shiro从Realm 获取安全数据...(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm 得到用户相应的角色/权限进行验证用户是否能进行操作

    42820

    2019年Spring Boot不可错过的22道面试题!

    4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性?...使用 JavaConfig 的优点在于: (1)面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。...15、什么是 FreeMarker 模板? FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。...这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。...Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。

    8.3K10

    SpringBoot 面试题及答案

    6.如何在 Spring Boot 中禁用 Actuator 端点安全性? 7.如何在自定义端口上运行 Spring Boot 应用程序? 8.什么是 YAML?...使用 JavaConfig 的优点在于: 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。...什么是 FreeMarker 模板? FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网 页生成。...这是一种攻击,迫使最终用户在当前通过身份验证的 Web 应 用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻 击者无法查看对伪造请求的响应。 19....Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程 序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。

    7.1K20

    【威胁通告】FusionAuth远程命令执行(CVE-2020-7799)漏洞威胁通告

    中经过身份验证的用户可以编辑电子邮件模板(Home->Settings->Email Templates)或主题(Home->Settings->Themes),从而通过处理自定义模板的Apache FreeMarker...引擎中的freemarker.template.utility.Execute在底层操作系统上执行任意命令。...可以通过管理仪表板以多种方式配置和自定义FusionAuth,为任何应用程序提供身份验证、授权和用户管理;由于使用Apache FreeMarker模板引擎,且未对用户输入数据进行过滤,此漏洞将对服务器安全造成严重威胁...,目前PoC已公开,请相关用户及时进行防护。...4漏洞防护 4.1 官方升级 4.1.1 快速升级 选择快速安装的用户可以使用如下方法升级FusionAuth到最新版本: Linux: 使用ZIP包方式安装的用户,首先进入应用的安装目录下,停止当前程序

    85220

    PortSwigger之不安全的反序列化+服务器端模板注入漏洞笔记

    02 Modifying serialized data types 描述 本实验使用基于序列化的会话机制,因此容易绕过身份验证。...某个功能对序列化对象中提供的数据调用危险的方法。要解决实验室问题,请编辑会话 cookie 中的序列化对象,并使用它morale.txt从 Carlos 的主目录中删除文件。...4.您可以exec(rm /home/carlos/morale.txt)通过传入一个CustomTemplate对象来利用此小工具链进行调用,其中:如果您遵循源代码中的数据流,您会注意到这会导致构造函数尝试从对象中获取...输入您自己的表达式或更改现有表达式之一以引用不存在的对象,在编辑模板的${}模板表达式中随便输入些什么,然后保存模板。输出中的错误消息显示正在使用 Freemarker 模板引擎。...解决方案 通过注入含有来自各种不同的模板语言,如模板语法一个绒毛试验串${{<%[%'"}}%\,进message参数。请注意,当您提交无效语法时,输出中会显示一条错误消息。

    2.2K10

    JAVA安全之FreeMark模板注入刨析

    index来获取当前项的索引,从0开始 ${fruit} is at index ${fruit?index}.... 包含导入 FreeMarker支持从其他文件导入模板或包含代码片段 1、include指令 使用include将其他模板包含到当前模板中 ...,直接渲染用户输入payload会被转码而失效,所以一般的利用场景为上传或者修改模版文件,下面我们对模板的解析过程进行一个简易的分析,首先我们再template.process处下断点进行调试 随后调用当前对象的...,随后调用当前模板元素的accept方法获取要访问的子模板元素,如果返回的子元素数组不为空则遍历这些子元素,随后递归调用visit方法,访问当前子元素 随后我们再最后一轮次跟进accept函数,在这里可以看到会调用...api则允许用户调用任何Java类中的方法,包括集合类、日期类等,在这里我们不免会想到去找寻Freemark中自带的可以执行命令的内置的JAVA类和方法,随后用于构造载荷 New引用 FreeMarker

    18810

    2019年Spring Boot面试都问了什么?快看看这22道面试题!

    4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性?...使用 JavaConfig 的优点在于: (1)面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。...15、什么是 FreeMarker 模板? FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。...这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。...Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。

    4.4K10

    2022 最新 Spring Boot 面试题 (一)

    使用 JavaConfig 的优点在于: 1、 面向对象的配置。 由于配置被定义为 JavaConfig 中的类, 因此用户可以充分 利用 Java 中的面向对象功能。...YAML 是一种人类可读的数据序列化语言。 它通常用于配置文件。 与属性文件相比 ,如 果我们想要在配置文件中添加复杂的属性 ,YAML 文件就更加 结构化, 而且更少混淆。...15、什么是 FreeMarker 模板? FreeMarker 是一个基于 Java 的模板引擎 ,最 初专注于使用 MVC 软件架构进行动 态网页生成 。...这是一种攻击, 迫使最终用户在当前通过身份验证的 Web 应用程序上执行不需要的操作。 CSRF 攻击专门针对状态改变请求, 而不是 数据窃取, 因为攻击者无法查看对伪造请求的响应。...Spring Boot 提供监视器端点以监控各个微服务的度量 。这 些端点对于获取有关应 用程序的信息( 如它们是否已启动) 以及它们的组件( 如数据库等) 是否正常运 行很有帮助。

    18410

    面试之SpringBoot

    使用 JavaConfig 的优点在于: 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。...监视器模块公开了一组可直接作为 HTTP URL 访问的 REST 端点来检查状态。 如何在 Spring Boot 中禁用 Actuator 端点安全性?...什么是 FreeMarker 模板? FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。...这是一种攻击,迫使最终用户在当前通过身份验证的 Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。...Spring Boot 提供监视器端点以监控各个微服务的度量。 这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。

    2.8K10

    shiro总结

    基本功能点如图所示: Authentication:身份认证/登录,验证用户是不是拥有相应的身份 Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情...或者细粒度的验证某个用户对某个资源是否具有某个权限 Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如...,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能 Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的 身份验证...这是一个全局设置,设置一次即可 通过SecurityUtils得到Subject,其会自动绑定到当前线程;如果在web环境在请求结束时需要解除绑定;然后获取身份验证的Token,如用户名/密码 调用subject.login...最后调用Subject.logout进行退出操作 Realm Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从

    65110
    领券