使用Spring在标题中显示用户信息

时间:2018-08-27 11:01:42

标签: spring spring-boot spring-security thymeleaf

我正在使用 Spring Thymeleaf ,我试图在标题中显示用户信息(用户名),并抛出所有页面。

  

header.html

<div th:fragment="logout" class="logout" sec:authorize="isAuthenticated()">     
        Logged in user: <span sec:authentication="name"></span> |                   
        Roles: <span sec:authentication="principal.authorities"></span>             
        <div>
            <form action="#" th:action="@{/logout}" method="post">                  
                <input type="submit" value="Logout" />
            </form>
        </div>
    </div>

但是它什么也没显示

2 个答案:

答案 0 :(得分:0)

将依赖项添加到org.thymeleaf.extras:thymeleaf-extras-springsecurity4的相应版本中。

然后将xmlns添加到您的html

<html xmlns:th="http://www.thymeleaf.org"
            xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">

您就可以

<div th:text="${#authentication.name}">
    The value of the "name" property of the authentication object should appear here.
</div>

有关Spring Security Integration module

的更多信息

答案 1 :(得分:0)

此问题的解决方案:

步骤1:创建一个CommunAdviceController

public class CommunAdviceController {

@Autowired
UtilisateurRepository utilisateurRepository;

@ModelAttribute("nomEtPrenom")
public String nomEtPrenomUtilisateur() {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    Utilisateur util = utilisateurRepository.findByEmail(authentication.getName()) ;    
    if( util != null) {         
        return util.getUsername();
    }else {
    return "Anonyme";
    }
}

}

请注意,在我的情况下,我收到的用户邮件地址为getUsername

第2步:调用HTML中的方法

<a href ="#" th:text="${nomEtPrenom}" class="nav-link dropdown-toggle"  id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">      

工作完成了。

希望它将对某人有所帮助。