Если у вас возникли вопросы, вы можете связаться со мной по электронной почте или создать 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 )