Проверьте, авторизован ли текущий пользователь фильтром запомнить меня в 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, если пользователь не является анонимным или запомнился

Другие вопросы по тегам