怎么在所有模板中显示当前登录用户的信息,包括在Spring安全应用程序中由WebMvcConfigurerAdapter管理的视图

原学程将引见若何在一切模板中显示以后登任命户的信息,包含在Spring平安运用法式中由WebMvcConfigurerAdapter治理的望图的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么在所有模板中显示当前登录用户的信息,包括在Spring安全应用程序中由WebMvcConfigurerAdapter管理的视图 教程 第1张

成绩描写

我有1个Spring Boot运用法式,它应用了Spring Security以及Thymeleaf模板。当掌握器由WebConfigurerAdapter的子类治理时,我测验考试在模板中显示登任命户的名字以及姓氏。

假定我的WebConfigurerAdapter子类以下所示

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter{

 @Override
 public void addViewControllers(ViewControllerRegistry registry){
  registry.addViewController("/some-logged-in-page").setViewName("some-logged-in-page");
  registry.addViewController("/login").setViewName("login");

 }
 ....
}

我的用户虚体类以下所示

@Entity
@Table(name = "user")
public class User {

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Column(name = "id", nullable = false, updatable = false)
 private Long id;



 @Column(name="first_name", nullable = false)
 private String firstName;


 public String getFirstName() {
  return firstName;
 }
 ...
}

在我的模板中,我测验考试应用以下代码

<div sec:authentication="firstName"></div> 

但是它出有起感化。

我晓得不妨按以下方法应用ControllerAdvise:

@ControllerAdvice
public class CurrentUserControllerAdvice {
 @ModelAttribute("currentUser")
 public UserDetails getCurrentUser(Authentication authentication) {
  return (authentication == null) ? null : (UserDetails) authentication.getPrincipal();
 }
}

而后应用以下代码拜访模板中的具体信息:

<span th:text ="${currentUser.getUser().getFirstName()}"></span>

但是这没有实用于应用我的类MvcConfig注册的所有望图掌握器。相反,我须要保证我的每一个掌握器皆是零丁的类。

这么,有人能告知我1种主动将登录的用户具体信息拔出到我的望图中的办法吗,比方原例中的1些-Logging-in-Page.html?感谢

推举谜底

因为Balaji Krishnan的提醒,完成这1面异常轻易。

根本上,我必需将Thymeleaf Spring平安散成模块添减到我的build.gradle文件中,以下所示:

compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity三")

而后在我的模板中,我只应用了以下标志:

<span th:text ="${#authentication.getPrincipal().getUser().getFirstName()}"></span>

佳了闭于怎样在一切模板中显示以后登任命户的信息,包含在Spring平安运用法式中由WebMvcConfigurerAdapter治理的望图的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。