gpt4 book ai didi

spring - 如何使用 spring security 和 Thymeleaf 获取当前登录用户的 ID

转载 作者:行者123 更新时间:2023-12-04 14:25:32 24 4
gpt4 key购买 nike

我在我的项目和 Thymeleaf View 中使用 Spring 安全性。我正在尝试获取当前登录用户的 ID,以便我可以将它用于我的某些方法。

例如,我正在尝试将用户添加到一个类(class)。在 html 部分我有这样的按钮。

<td th:each="user : ${user}">
<a th:href="@{/userList/{user_id}/saveClasses/{classes_id} (user_id=${user.id}, classes_id=${classes.id})}">Attend</a>
</td>

当我运行我的代码时,我为数据库中的 2 个用户获得了 2 个参加按钮。
我想为当前已登录的用户设置一个按钮。我该怎么做?

为了显示登录用户的用户名,我使用了这个:

<span sec:authorize="isAuthenticated()"> 
<a class="navbar-brand" href="#">Hello <span sec:authentication="name"></span></a>
</span>

最佳答案

解决方案


在花了几个小时寻找答案后,终于找到了适合我的解决方案。

我已经使用存储库完成了,这是我的实现:

UserRepository.java

@Repository
public interface UserRepository extends CrudRepository<User, Long>, UserDetailsService {

public User findUserByUsername(String username);

}

UserRepositoryImpl

公共(public)类 UserRepositoryImpl 实现 UserDetailsS​​ervice {

@Autowired
private UserRepository userRepository;

@Override
public UserDetails loadUserByUsername(String username) {
return userRepository.findUserByUsername(username);
}

controller.java

@RequestMapping("/dashboardUser")
public String dashboardPageList(Model model, @AuthenticationPrincipal UserDetails currentUser ) {
User user = (User) userRepository.findUserByUsername(currentUser.getUsername());
model.addAttribute("currentStudent", user);

return "dashboardUser";
}

在 .html 文件中我是这样显示的

<div class="form-group label-floating">
<label>Username</label>
<input type="text" name="username"
th:value="${currentStudent.username}"/>
</div>

关于spring - 如何使用 spring security 和 Thymeleaf 获取当前登录用户的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45733193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com