在controler中获取用户名信息
Spring
会自动注入Principal
,通过principal
可以可以获取到登录用户的用户名:
@Controller
public class MockController {
@GetMapping(value="/mock")
public String mock(ModelMap model, Principal principal ) {
String name = principal.getName(); //get logged in username
return "mock";
}
}
在template中获取登录用户的信息
这里我们使用官网推荐的thymeleaf-extras-springsecurity。README.md
给出了详细的教程,但是都是基于Spring-MVC
的,在和Spring-Boot
整合的时候还有一些问题。
比如StackOverflow中这个问题上面提到的Spring-Boot
现在的最新版的Thymeleaf Extras for Spring Security 4
并不支持3.x.x,因此只能使用2.x.x。p.s: Spring-Boot1.5.3
默认加载的版本是~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE]
。
stackoverflow上面的一些答案以及README.md中提到要注册SpringTemplateEngine
,在现在的最新Spring-Boot1.5.3
下面这段代码这是没有必要的,Spring-Boot
会实现自动注入。
@Bean
public SpringTemplateEngine templateEngine(TemplateResolver templateResolver, SpringSecurityDialect sec) {
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
templateEngine.addDialect(sec); // Enable use of "sec"
return templateEngine;
}
p.s: 如果使用intellij-idea的话,参考官网文档可以在Add Framework
中添加thymeleaf
支持,以实现自动补全。