Слияние кода завершено, страница обновится автоматически
springboot-security-oauth2-jwt
Есть ли у вас какие-либо вопросы? Пожалуйста, напишите мне или создайте issue.
security
- Простой демонстрационный проект на основе spring security reference, не представляет ценности для использования, можно пропустить.
security-ajax
- Отказ от стандартного способа входа в систему и использование входа через AJAX. В связи с этим были созданы пользовательские классы AuthenticationSuccessHandler и AuthenticationFailureHandler для возврата пользовательских 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);
}
}
/**
* @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("User \'" + username + "\' not found");
if(this.hideUserNotFoundExceptions) {
throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
}
throw var6;
}
@Slf4j
@Component
public final class CustomAuthenticationProvider extends DaoAuthenticationProvider {
@Autowired
private UserDetailsService userDetailsService;
@PostConstruct
public void init() {
setUserDetailsService(userDetailsService);
setPasswordEncoder(new BCryptPasswordEncoder(8));
setHideUserNotFoundExceptions(false);
}
}
- Добавлен фильтр проверки подлинности Captcha: CustomCaptchaVerifyFilter, см. код проекта.
security-ajax-rememberme
- В security-ajax добавлена функция запоминания.
- Предоставлены bean-компоненты RememberMeAuthenticationFilter и RememberMeAuthenticationProvider.
- В CustomCaptchaVerifyFilter установлен rememberMeServices: setRememberMeServices(rememberMeServices).
- Для получения подробной информации о коде клонируйте проект и изучите его.
oauth2
- Требует доработки.
oauth2-sso-server
- Требует доработки.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )