Spring Security Помните мои основные принципы:
При входе в систему запрос отправляется на фильтр usernamepasswordAuthenticationFilter. Когда фильтр будет успешно аутентифицируется, будет вызван MameService, который будет генерировать токен, напишите токен в печенье браузера. В то же время в MampleMervice есть токенрепосирий, который записывает токен и информацию пользователя в базу данных. Таким образом, когда пользователь снова обращается к системе и обращается к интерфейсу, он пройдет через фильтр MameMeauthenticationFilter. Он будет читать токен в печенье и передаст его, чтобы вспомнить Сервис. Rememberservice будет использовать ThenRepository, чтобы проверить, есть ли записи из базы данных на основе токена. Если есть запись, будет выведено имя пользователя, а затем вызовут userDetailService, чтобы получить информацию пользователя на основе имени пользователя, а затем поместите ее в SecurityContext.
RememberMeAuthenticationFilter Authenticate второго положения фильтра в цепочке фильтра в безопасности пружины. Когда другой фильтр аутентификации не может быть успешно аутентифицирован, запомните MeauthenticationFilter, чтобы попробовать аутентификацию.
выполнить:
1. Добавить <input type="checkbox" name="remember-me" value="true"/> в форму входа в систему, Springsecurity определяет константу в классе SpringSessionRememberMeServices , а значение по умолчанию-помните-меня
2. Согласно вышеуказанной схеме схематической диаграммы, вам необходимо настроить токенропозиторий и сохранить сгенерированный токен в базу данных. Это конфигурация конфигурации бобов и размещена в BrowserSecurityConfig
3. Настройка в Configure
4. Добавьте время автоматического входа в BrowserProperties, чтобы сделать меня настраиваемым
// Помните меня, чтобы настроить Private int intmemeseconds = 10; пакет qihuo com.imooc.s@configuration // Это конфигурация открытого класса Browsersecurityconfig Extends WebseCurityConfigurerAdapter {// Прочтение конфигурации страницы входа в конфигурацию пользователя @autowireded Private SecurityPerties SecurityPerties; // Индивидуальный процессор после успешного входа @autowired Private AuthenticationsUccessHANDLER IMOOCAuthenticationSuccessHandler; // Индивидуальный процессор после неудачной аутентификации @autowired Private Private AuthenticationFailureHandler ImoocauthenticationFailureHandler; // Источник данных @Autowired Private DataSource DataSource; @Autowired private userdetailsservice userdetailsservice; // Обратите внимание, что это org.springframework.security.crypto.password.passwordencoder @bean publiceNcoder passwordDencoder () {// bcryptpasswordencoder реализует пароль. } /** * Remember my TokenRepository configuration, execute after login successfully* After login successfully, save the token in the database* @Description: Remember my TokenRepository configuration* @param @return JdbcTokenRepositoryImpl * @return PersistentTokenRepository * @throws * @author lihaoyang * @date March 5, 2018*/ @Bean public PersistentTokenRepository PersistentTokenRepository () {jdbctOkenRePositoryImpl jdbctOkenRepository = new jdbctOkeKENREPOSitoryImpl (); jdbctokenrepository.setDataSource (DataSource); // Соответствующая таблица автоматически генерируется при запуске. Вы можете выполнить сценарий create_table_sql сами в jdbctokenrepositoryImpl для создания таблицы jdbctokenrepository.setCreateTableOnStartup (true); вернуть jdbctokenrepository; } // Версия 2: страница входа в систему @Override Protected void configure (httpsecurity http) throws {// filter кода проверки validatecodefilter validatecodefilter = new validatecodefilter (); // Использование собственной обработки ошибок в фильтре проверки Filter validateCodefilter.setAuthenticationFailureHandler (iMoOcauthenticationFailureHandler); // Конфигурированная проверка кода URL -адреса validateCodefilter.seTecurityProperties (SecurityProperties); validatecodefilter.afterpropertiesset (); // Реализовать вход в форму для прыжка интерфейса, который требует аутентификации, Security = Authentication + Authorization //http.httpbasic () // Это подлинность всплывающего окна по умолчанию // http // Загрузить Filter usernaMepassFassFilTerseFilTerse). configuration.formlogin () .loginpage ("/authentication/require") // Обработка аутентификации пользователя BrowserSecurityController // filter filter usernamepasswardauthenticationfilter. .successhandler (imoocauthenticationsuccessHandler) // Пользовательская аутентификация PostProcessor.FailureHandler (iMooCauthenticationFailureHandler) // Обработка после неудачи входа. И () // Запомните мою связанную конфигурацию. TokenValitySeconds (SecurityProperties.getBrowser (). getRememberMeConds ()) // Запомнить мне sewords.userDetailsService (userDetailsService) // Запомнить после того, как я преуспел, Call userDetailsService для запроса пользовательской информации/// Autorize связанный с конфигурацией. SecurityProperties.getBrowser (). getLoginPage (): Пользователь настроенный вход. //AnyRequest.Authenticated () // Требуется аутентификация аутентификации. И () .csrf (). Disable () // Закрыть защиту CSRF; }} curity.browser;Поскольку вы хотите справиться с базой данных, вам необходимо ввести источник данных: Application.properties
spring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc: mysql: //127.0.0.1: 3306/imooc-demospring.datasource.username = rotspring.datasource.passwrid = root
Запустите приложение, доступ к Localhost: 8080/пользователь, и требуется вход в систему
Успешно войдите в систему:
База данных: генерируйте таблицу Persistent_Logins и сохраните кусок данных
Остановите службу и запустите его снова (прокомментируйте jdbcTokenRepository.setCreateTableOnStartup(true); ) Поскольку наша информация о входе в систему пользователя находится в сеансе, после перезапуска службы, вы должны перезагрузить на страницу входа в систему, но потому что я настроил, чтобы вспомнить меня, я могу напрямую получить доступ и получить данные интерфейсных данных.
Заголовок запроса:
Пока что основное помните, было сделано
Полный код размещен в GitHub: https://github.com/lhy1234/spring-security
Суммировать
Выше приведено в Spring Security Construction Service, которую редактор представил вам. Запомнить меня. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!