使用spring security时,特别是@notation;在Controller中访问主体的正确方法是什么?让我们说以下是我的控制器,但我想在某个地方访问secure()方法中的主体...
@Controller
public class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(ModelMap map, @RequestParam(value="fail" , required=false) String fail){
map.addAttribute("title", "Login: AD Credentials");
if(fail != null){
map.addAttribute("error", "Invalid credentials");
}
return("login");
}
@RequestMapping("/secure")
@PreAuthorize("isAuthenticated()")
public String secure(ModelMap map, String principal){
System.out.println(principal);
return("secure");
}
}
答案 0 :(得分:15)
最简单的是SecurityContextHolder.getContext().getAuthentication().getPrincipal()
。通过线程局部模式工作。