Получить Spring Security Principal в JSP EL expression

Я использую Spring MVC и Spring Security версии 3.0.6.RELEASE. Какой самый простой способ получить имя пользователя в моем JSP? Или даже просто узнать, вошел ли пользователь в систему или нет? Я могу предложить несколько способов:

1. Использование скриплета

Использование скриплета, подобного этому, для определения того, вошел ли пользователь в систему:

<%=org.springframework.security.core.context.SecurityContextHolder.getContext()
    .getAuthentication().getPrincipal().equals("anonymousUser")
    ? "false":"true"%>

Однако я не поклонник использования скриптлетов, и я хочу использовать это в некоторых тегах, что требует поместить его обратно в качестве атрибута страницы.

2. Использование SecurityContextHolder

Я могу снова использовать SecurityContextHolder из моего @Controller и поместить его в модель. Однако мне это нужно на каждой странице, поэтому я бы не хотел добавлять эту логику в каждый из моих контроллеров.

Я подозреваю, что есть более чистый способ сделать это...

43
задан A.L 14 December 2014 в 01:38
поделиться