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

如何使用Spring Boot Thymeleaf显示当前登录的用户?

在Spring Boot中使用Thymeleaf显示当前登录的用户,可以按照以下步骤进行:

  1. 首先,确保已经添加了Thymeleaf和Spring Security的相关依赖。
  2. 在Spring Boot的配置文件中,配置Spring Security以启用用户认证和授权功能。
  3. 创建一个自定义的UserDetailsService实现类,用于从数据库或其他数据源中获取用户信息。
  4. 创建一个自定义的UserDetails实现类,表示用户的详细信息,包括用户名、密码和角色等。
  5. 在Spring Security的配置类中,重写configure方法,配置认证管理器和授权规则。
  6. 创建一个Controller类,用于处理用户登录和展示当前登录用户的请求。
  7. 在Controller类中,使用@AuthenticationPrincipal注解获取当前登录的用户对象。
  8. 在Thymeleaf的HTML模板中,使用Thymeleaf的表达式语言展示当前登录用户的相关信息。

以下是一个简单的示例:

Step 1: 添加依赖

代码语言:txt
复制
<!-- Spring Security -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<!-- Thymeleaf -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Step 2: 配置文件(application.properties)

代码语言:txt
复制
spring.security.user.name=admin
spring.security.user.password=admin
spring.security.user.roles=ADMIN

Step 3: 创建UserDetailsService实现类

代码语言:txt
复制
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // 根据用户名查询用户信息
        // 可以从数据库中获取用户信息
        // 返回一个实现了UserDetails接口的自定义UserDetails对象
    }
}

Step 4: 创建UserDetails实现类

代码语言:txt
复制
public class UserDetailsImpl implements UserDetails {

    private String username;
    private String password;
    private Collection<? extends GrantedAuthority> authorities;

    // 构造方法

    // 实现UserDetails接口的所有方法
}

Step 5: 配置类(SecurityConfig)

代码语言:txt
复制
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/login").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .logout().permitAll();
    }
}

Step 6: 创建Controller类

代码语言:txt
复制
@Controller
public class UserController {

    @GetMapping("/login")
    public String login() {
        return "login";
    }

    @GetMapping("/profile")
    public String profile(@AuthenticationPrincipal UserDetailsImpl userDetails, Model model) {
        model.addAttribute("username", userDetails.getUsername());
        model.addAttribute("roles", userDetails.getAuthorities());
        return "profile";
    }
}

Step 7: Thymeleaf模板(login.html)

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form action="/login" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div>
            <button type="submit">Login</button>
        </div>
    </form>
</body>
</html>

Step 8: Thymeleaf模板(profile.html)

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Profile</title>
</head>
<body>
    <h1>Welcome, <span th:text="${username}"></span>!</h1>
    <h2>Your roles:</h2>
    <ul>
        <li th:each="role : ${roles}" th:text="${role}"></li>
    </ul>
</body>
</html>

请注意,以上示例中的代码仅供参考,具体实现可能需要根据您的实际需求进行调整。同时,推荐的腾讯云产品链接地址如下:

  1. 腾讯云·云服务器(CVM):提供灵活可扩展的云服务器实例。
  2. 腾讯云·云数据库MySQL版:高性能、高可用的关系型数据库服务。
  3. 腾讯云·对象存储(COS):安全、稳定、低成本的大规模云端存储服务。
  4. 腾讯云·CDN加速:提供全球加速、高带宽、低时延的内容分发网络服务。

请注意,以上仅为示例,并非实际的腾讯云产品推荐,具体产品选择应根据实际需求进行评估和决策。

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

相关·内容

Linux如何查询当前登录用户信息?

查看当前用户名命令:whoami 如果只是想查看当前登录用户名,那么很简单,直接使用命令:whoami即可 示例: [root@xxx~]# whoami root 当前示例下用户名为root。...也可以加空格,使用who am i命令,可以查询到当前登录用户名、终端类型、时间和IP信息 示例: [root@xxx~]# who am i root pts/3 2019-01...-11 13:02 (36.49.58.93) 如上例所示,当前登录用户为root,伪终端(3号)形式登录登录时间及登录IP都有显示。...使用w命令查看当前用户及正在使用进程 使用命令w可以查看当前Linux服务器连接所有用户用户正在使用进程: [root@xxx~]# w 13:07:38 up 3 days, 20:27,...who命令查看当前用户详细信息 Linux who命令用于显示系统中有哪些使用者正在上面,显示资料包含了使用者 ID、使用终端机、从哪边连上来、上线时间、呆滞时间、CPU 使用量、动作等等 [root

11.4K20
  • 项目之通过Spring Security获取当前登录用户信息(6)

    用户登录时,应该读取用户权限,以完成Spring Security在验证过程中授权,以保证后续在进行某些访问时,能给出正确判断,使得某些用户可以执行某些操作,而另一些用户可能因为没有权限而不能执行这些操作...通过Spring Security获取当前登录用户信息 当用户成功登录后,需要获取用户信息才可以执行后续操作,例如获取某用户权限、获取某用户问题列表、获取某用户个人信息等等。...Spring Security提供了简便获取当前登录用户信息做法,在控制器处理请求方法中,添加Authentication类型参数,或添加Principal类型参数,均可获得当前登录用户信息...然后,在业务层处理用户登录时,使用以上创建UserInfo类型对象作为返回值对象: // 组织“用户详情”对象 UserDetails userDetails = org.springframework.security.core.userdetails.User...); userInfo.setGender(user.getGender()); userInfo.setType(user.getType()); return userInfo; 以后,当需要获取当前登录用户信息时

    1.9K10

    如何使用Spring BootProfiles

    Spring提供了@Profile让我们为不同环境创建不同配置:例如,假设我们有生产,开发和测试等环境。在开发环境中,我们可以启用开发配置文件;在生产环境中我们可以启用生产配置文件等。...=root 可以在application-dev.properties文件中为dev配置文件配置相同属性,以使用内存中H2数据库: spring.datasource.driver-class-name...=sa 可以使用属性文件.properties / .yml、命令行和以编程等三种方式激活相应配置文件。...激活方式: 使用 application.properties属性文件激活 . spring.profiles.active=dev 2.使用命令行, 当我们在命令行添加一个活动配置时,将取代属性文件中活动配置...5.系统环境激活: export spring_profiles_active=dev 这是Spring Boot配置外部化灵活。

    1.2K30

    Spring认证指南:了解如何使用 Spring Security 保护您 Web 应用程序

    原标题:Spring认证指南:了解如何使用 Spring Security 保护您 Web 应用程序。...你将建造什么 您将构建一个 Spring MVC 应用程序,该应用程序使用由固定用户列表支持登录表单来保护页面。...该userDetailsService()方法使用单个用户设置内存中用户存储。该用户用户名是user,密码是password,角色是USER。 现在您需要创建登录页面。...按照配置,Spring Security 提供了一个过滤器来拦截该请求并对用户进行身份验证。如果用户未能通过身份验证,页面将被重定向到/login?error,并且您页面会显示相应错误消息。...成功退出后,您应用程序将发送到/login?logout,并且您页面会显示相应成功消息。 最后,您需要为访问者提供一种显示当前用户名和注销方式。

    1.1K20

    如何优雅地使用Spring Boot拦截器提升应用用户体验?

    拦截器可以在请求到达Handler前或请求返回前做一些处理,比如验证用户登录状态、记录日志、修改请求参数等。本文将介绍Spring Boot拦截器相关知识,并提供实例代码。...示例代码以下示例代码演示了如何Spring Boot中实现拦截器。假设我们需要实现登录状态拦截器,当用户登录时,返回错误信息,否则继续执行。...小结本文通过一个简单示例代码演示了如何Spring Boot中实现拦截器,并使用测试用例测试了拦截器效果。...我们通过实现一个登录功能和一个拦截器来验证用户登录状态,并将拦截器注册到Spring Boot中,验证了拦截器效果。...总结来说,拦截器是Spring Boot中常用一种功能,在需要对请求进行统一处理、验证登录状态等场景下非常有用。通过本文学习,我们可以掌握拦截器基本使用方法,并应用到实际开发中去。

    71831

    Spring Boot(六):如何优雅使用 Mybatis

    Sql 了,有不太了解可以看我上篇文章springboot(五): Spring Data Jpa 使用。...层和配置文件等,发展到最顶端就是今天要讲这种模式了, mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以简单配置轻松上手...Mybatis 看 Spring Boot 这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。...mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后老传统。...使用和上个版本没有任何区别,大家就看文章对应示例代码吧 如何选择 两种模式各有特点,注解版适合简单快速模式,其实像现在流行这种微服务模式,一个微服务就会对应一个自已数据库,多表连接查询需求会大大降低

    57830

    (八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf

    ,但是实际上,如果代码涉及逻辑比较多以后,代码是极其繁琐,冗余,而有很多开发框架,例如 Spring Security,Shiro,已经为我们提供了这种功能,我们只需要知道如何正确配置以及使用它了...,这里是因为,我运行是已经写好代码,不登录页面例如 L-A-a 等模块就显示不出来,所以拿一个定义好管理员身份登陆了 关于如何使其自动切换显示登陆还是登录后信息,在后面会讲解 1、首页 ?...,那就是,例如我主页中三个模块,超级管理员A、B、C都可以访问,管理员能访问 A 和 B,而登录普通用户只能访问 A,如何写呢?...主要内容已经结束了,不过因为在前面 Spring Security 中,讲过如何搭配 Thymeleaf 使用,所以接着补充一点关于如何用 Shiro 配合 Thymeleaf 方法 A:引入 首先引入两者整合依赖.../thymeleaf/shiro"> 这里解决问题,主要是登录前后,顶部导航栏一个显示问题,例如登录前就应该显示登陆,登录后,就显示用户名和注销,如果需要更多信息,我就建议存到 session

    99820
    领券