基於我的理解,在Spring Security中有多種不同的方式來檢索經過身份驗證的用戶名。在Spring Security中存儲用戶對象
我目前由包括Principal
作爲控制器方法參數抓住了用戶名:
@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
public ModelAndView displayHomePage(ModelAndView modelAndView, Principal principal) {
modelAndView.addObject("email", principal.getName());
// Render template located at src/main/resources/templates/dashboard.html
modelAndView.setViewName("dashboard");
return modelAndView;
}
春天在什麼安全提供了一種簡單的方法對我來說,用戶對象存儲到會話中,因此它可以很容易地通過任何控制器方法檢索?
我想避免每次執行DB查詢:
// Lookup user in database by e-mail
User user = userService.findUserByEmail(principal.getName());
我使用的Spring Security 4.2。
@MatejMarconak任何控制器方法檢索 –
你可以做這樣的事情:'認證認證= SecurityContextHolder.getContext()getAuthentication(); String currentPrincipalName = authentication.getName();' –
好的,但是如何在不執行數據庫查找的情況下獲取整個User對象呢?我已經更新了我的問題,以便更清楚。 –