Dostęp do obiektu użytkownika w kontrolerach

0

Tworzę aplikację w Spring MVC i mam problem z uzyskaniem dostępu do obiektu użytkownika (ustawienia, dane, kolekcje obiektów itd.). Obecnie realizuję to w ten sposób

	@RequestMapping(value = { "/editor" }, method = RequestMethod.GET)
	public ModelAndView mainPage(Authentication authentication) {
		
		String name = authentication.getName();
		User currentUser = userService.getCurrentUser(name);
		ModelAndView model = new ModelAndView("editor");
		return model;
	}
@Service("userService")
@Scope(value=org.springframework.web.context.WebApplicationContext.SCOPE_SESSION, proxyMode=ScopedProxyMode.TARGET_CLASS)
public class UserService {

	@Autowired
	private UserDao userDao;
	private User user;
	
	@Override
	@Transactional
	public User getCurrentUser(String email) {
		
		if(user == null) {
			user = userDao.getByEmail(email);
		}
		
		return user;
	}	
}

Jednak czuję, że jest to bardzo nieeleganckie rozwiązanie, ze względu na potrzebę ciągłego sprawdzania (user == null) oraz tworzenia każdego kontrolera z parametrem typu Authentication. W jaki sposób mógłbym uzyskiwać dostęp do tego obiektu z poziomu dowolnego kontrolera? Czy istnieją jakieś książki albo artykuły, które opisują tego typu problemy, jak prawidłowo organizować kod aplikacji?

0

Jeżeli używasz spring security to:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User user = (User)auth.getPrincipal();
user.getUsername();

i trochę dokumentacji, tylko czytaj powoli można się zadławić: http://docs.spring.io/spring-security/site/docs/3.0.x/reference/technical-overview.html

Jeżeli musi to byś jakiś object nie związany z security... to nie możesz go po prostu wrzucić do cotnextu (zrobić beana - object który będzie dostarczaj informacji wyłącznie o użytkowniku)

1 użytkowników online, w tym zalogowanych: 0, gości: 1