1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/DSLZC-springboot-security-oauth2-jwt

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

springboot-security-oauth2-jwt

Если у вас возникли вопросы, вы можете связаться со мной по электронной почте или создать issue

-Ссылки-

https://mp.weixin.qq.com/s?__biz=MzAxODcyNjEzNQ==&mid=2247484574&idx=1&sn=0984db0da3dc0efda956fa0aaeabe479&chksm=9bd0a906aca7201028da742819b4f5b78c8c4768bd88237ffd54c5c818afec0f7af47b1d45eb#rd
http://www.spring4all.com/article/428
https://www.cnblogs.com/x113773/p/7160203.html
http://www.mkyong.com/spring-security/spring-security-remember-me-example/
https://www.cnblogs.com/softidea/p/5991897.html

Проектная структура

security

  • Пример, основанный на руководстве Spring Security, который имеет небольшую ценность и может быть пропущен.

security-ajax

  • Отказ от использования стандартного метода аутентификации в пользу AJAX-метода. В результате были созданы CustomAuthenticationSuccessHandler и CustomAuthenticationFailureHandler, чтобы вернуть пользователю специфический JSON.
/**
 * @author dongsilin
 * @version 2018/4/8.
 *          Обработка успешной аутентификации
 */
@Slf4j
@Component
public final class CustomAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {
        log.info("*******************AuthenticationSuccessHandler");
        WebUtil.output(response, RestResponse.buildSuccess(), WebUtil.ResponseOutputType.JSON);
    }
}
``````java
/**
 * @author dongsilin
 * @version 2018/4/8.
 *          Обработка неудачной аутентификации
 */
@Slf4j
@Component
public final class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {
        log.info("*******************AuthenticationFailureHandler");
        if (e instanceof CaptchaAuthenticationException) {
            WebUtil.output(response, RestResponse.buildFail(e.getMessage()), WebUtil.ResponseOutputType.JSON);
        } else if (e instanceof UsernameNotFoundException) {
            WebUtil.output(response, RestResponse.buildFail("Пользователь с таким именем не существует"), WebUtil.ResponseOutputType.JSON);
        } else if (e instanceof BadCredentialsException) {
            WebUtil.output(response, RestResponse.buildFail("Неверный пароль"), WebUtil.ResponseOutputType.JSON);
        } else {
            WebUtil.output(response, RestResponse.buildFail("Операция не удалась"), WebUtil.ResponseOutputType.JSON);
        }
    }
}
  • По умолчанию, DaoAuthenticationProvider игнорирует исключение UsernameNotFoundException (ошибка имени пользователя), так как его параметр hideUserNotFoundExceptions установлен в true. Из-за этого исключение скрывается. В связи с этим создаем кастомный AuthenticationProvider, который наследуется от DaoAuthenticationProvider, и устанавливаем hideUserNotFoundExceptions в false.
// org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider, строка 62
try {
    user = this.retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication);
} catch (UsernameNotFoundException var6) {
    this.logger.debug("Пользователь '" + username + "' не найден");
    if (this.hideUserNotFoundExceptions) {
        throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Недействительные учетные данные"));
    }
    throw var6;
}
``````java
@Slf4j
@Component
public final class CustomAuthenticationProvider extends DaoAuthenticationProvider {

Так как данный текст представляет собой код Java, его не требуется переводить. Исходный текст остается без изменений. @Autowired private UserDetailsService userDetailsService;

@PostConstruct
public void init() {
    setUserDetailsService(userDetailsService);
    setPasswordEncoder(new BCryptPasswordEncoder(8));
    setHideUserNotFoundExceptions(false);
}

}

> * Добавлен фильтр для проверки капчи при входе: CustomCaptchaVerifyFilter, см. проектный код
**security-ajax-rememberme**
> * В модуле security-ajax добавлена возможность запомнить пользователя
> * Предоставлены бины RememberMeAuthenticationFilter и RememberMeAuthenticationProvider
> * В CustomCaptchaVerifyFilter установлен rememberMeServices: setRememberMeServices(rememberMeServices)
> * Подробный код доступен после клонирования проекта
**oauth2**
> * В процессе доработки
**oauth2-sso-server**
> * В процессе доработки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/DSLZC-springboot-security-oauth2-jwt.git
git@api.gitlife.ru:oschina-mirror/DSLZC-springboot-security-oauth2-jwt.git
oschina-mirror
DSLZC-springboot-security-oauth2-jwt
DSLZC-springboot-security-oauth2-jwt
master