Проверьте, авторизован ли текущий пользователь фильтром запомнить меня в Spring Security.
Как программно проверить, вошел ли пользователь с помощью фильтра запомнить меня в Spring Security?
Например, как это сделать в Spring Controller
@RequestMapping({"/sell-all-assets"})
public String sellAllAssets(Model model, HttpServletRequest request) {
if (isRememberMeAuthenticated()) {
return "redirect:/login";
} else {
accountService.sellAllAssets(getCurrentUser());
return "pages/myaccount";
}
}
public static boolean isRememberMeAuthenticated() {
???
}
3 ответа
Решение
Похоже, класс AuthenticationTrustResolverImpl содержал код, который ответил на мой вопрос. Вот
public static boolean isRememberMeAuthenticated() {
// Check authentication exists
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null) {
return false;
}
return RememberMeAuthenticationToken.class.isAssignableFrom(authentication.getClass());
}
Зачем это делать самому Spring Security может сделать это для вас.
<intercept-url pattern="/sell-all-assets" access="hasRole("user") and isFullyAutheticated()"/>
См. http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/ для получения дополнительной информации.
Чтобы добавить немного больше к ответу Deinum,
isRememberMe () - возвращает true, если текущий участник - пользователь, запомнившийся мной
isAuthenticated () - возвращает true, если пользователь не является анонимным
isFullyAuthenticated ()- возвращает true, если пользователь не является анонимным или запомнился