SpringBootプロジェクトを実装して、ThymeleafでSpring Securityの現在のユーザーの情報を取得する2つの方法

最初の方法:拡張パックを使用してユーザー情報を取得する

使い方

1.まず、ThymeleafとSpringSecurityの拡張機能の依存関係を紹介します。

私のSpringBootバージョンは2.2.6.RELEASESpringSecurityのデフォルトバージョンな5.2.2.RELEASE
ので、拡張依存パッケージの5バージョンを選択しました

<dependency>
	<groupId>org.thymeleaf.extras</groupId>
	<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

自分の状況に応じて4つの拡張依存パッケージを選択することもできます:thymeleaf-extras-springsecurity4

2.次に、Thymeleafページに関連する制約を導入します。

<html lang="en" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"><!-- Thymeleaf提供的Spring Security标签支持 -->

3.使用

登录名:<span sec:authentication="name"></span>
角色:<span sec:authentication="principal.authorities"></span>
用户名:<span sec:authentication="principal.username"></span>
密码:<span sec:authentication="principal.password"></span>

もちろん他の方法もあります(ささやくbb

最初の方法:セッションを使用してユーザー情報を取得する

以前は、Spring Securityがカスタムメソッドなしで成功ページに直接ジャンプしたと思っていたため、メソッドでユーザー情報を取得できず
、Serviceでメソッドを呼び出してユーザーにクエリを実行しているので、Serviceクラスにある必要があることを突然思い出しましたセッションでユーザー情報を保存し、ページのセッションで情報を取得します

コード:

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserRepository userRepository;
    @Autowired
    HttpSession session;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userRepository.findByUsername(username);
        if (user!=null)
        {
            session.setAttribute("USER_INFO",user);
            ...(省略)
        }
        ...(省略)
    }
}

フロントで入手してください:

用户名:<span th:text="${session.USER_INFO.username}"></span>

元の記事を184件公開 賞賛された6件 680,000回の閲覧

おすすめ

転載: blog.csdn.net/Piconjo/article/details/105443573