我正在開發一個使用Spring Security進行用戶身份驗證的Web應用程序。 我知道,我能登錄的用戶以這種方式:哪一種獲得彈簧安全登錄用戶的最佳方式?
public class SecurityUtil {
public static User getCurrentUser() {
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
}
}
並以這種方式工作得很好。 現在的問題是:哪個是訪問此值的最佳方式?我會做一些例如:
1.用戶聲明爲控制器變量:
public class FooController {
@Autowired
private FooService fooService;
private User u = SecurityUtil.getCurrentUser();
@RequestMapping(...)
public void control() {
fooService.doSomething(u);
}
}
2.用戶作爲參數傳遞給服務:
public class FooController {
@Autowired
private FooService fooService;
public void control() {
fooService.doSomething(SecurityUtil.getCurrentUser());
}
}
3.用戶在訪問服務:
public class FooService {
public void doSomething() {
SecurityUtil.getCurrentUser();
//Do something
}
}
全都是這樣的例子有效嗎?我可以不清楚地使用它們中的任何一個嗎?我應該知道哪些缺點?
您使用的是哪個版本的Spring? – 2012-04-03 11:48:18