Здравствуйте. Некорректно работает RememberMe.
Когда вхожу в систему с галкой RememberMe. В бп (persistent_logins
) в поле username записывается пользователь целиком, а не email
(
User [ id=6,
firstName=Test,
lastName=Test,
email=test@test.com,
password=$2a$11$fi4bsccQ01WF3fSWvkLRluTKzG6jN85YXJ5t5.9svzoJp/Rl.l/vq,
enabled=true,
isUsing2FA=false,
secret=897598fa-ce62-413b-8aed-2d365bcad856,
roles=[Role[name=ROLE_ADMIN][id=4]] ])
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Autowired
@Qualifier("userDetailsService")
private UserDetailsService userDetailsService;
@Autowired
private AuthenticationSuccessHandler myAuthenticationSuccessHandler;
@Autowired
private LogoutSuccessHandler myLogoutSuccessHandler;
@Autowired
private AuthenticationFailureHandler authenticationFailureHandler;
@Autowired
private CustomWebAuthenticationDetailsSource authenticationDetailsSource;
public SecurityConfig() {
super();
}
@Override
protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
auth.authenticationProvider(authProvider());
}
@Override
public void configure(final WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/resources/**");
}
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login*", "/logout*", "/signin/**", "/signup/**",
"/user/registration*", "/registrationConfirm*", "/expiredAccount*", "/registration*",
"/badUser*", "/user/resendRegistrationToken*", "/forgetPassword*", "/user/resetPassword*",
"/user/changePassword*", "/emailError*", "/resources/**", "/old/user/registration*", "/successRegister*", "/qrcode*").permitAll()
.antMatchers("/invalidSession*").anonymous()
.antMatchers("/user/updatePassword*", "/user/savePassword*", "/updatePassword*").hasAuthority("CHANGE_PASSWORD_PRIVILEGE")
.anyRequest().hasAuthority("READ_PRIVILEGE")
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/homepage.html")
.failureUrl("/login?error=true")
.successHandler(myAuthenticationSuccessHandler)
.failureHandler(authenticationFailureHandler)
.authenticationDetailsSource(authenticationDetailsSource)
.permitAll()
.and()
.rememberMe().rememberMeServices(rememberMeServices())
.and()
.sessionManagement()
.invalidSessionUrl("/invalidSession.html")
.maximumSessions(1).sessionRegistry(sessionRegistry()).and()
.sessionFixation().none()
.and()
.logout()
.logoutSuccessHandler(myLogoutSuccessHandler)
.invalidateHttpSession(false)
.logoutSuccessUrl("/logout.html?logSucc=true")
.deleteCookies("JSESSIONID")
.permitAll();
}
@Bean(name="rememberMeServices")
public PersistentTokenBasedRememberMeServices rememberMeServices(){
PersistentTokenBasedRememberMeServices rememberMeServices = new PersistentTokenBasedRememberMeServices("email",userDetailsService,persistentTokenRepository());
rememberMeServices.setCookieName("remember-me");
rememberMeServices.setParameter("remember-me");
rememberMeServices.setTokenLength(32);
rememberMeServices.setTokenValiditySeconds(86400);
return rememberMeServices;
}
@Bean(name = "tokenRepository")
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl tokenRepositoryImpl = new JdbcTokenRepositoryImpl();
tokenRepositoryImpl.setDataSource(dataSource);
return tokenRepositoryImpl;
}
@Bean
public DaoAuthenticationProvider authProvider() {
final CustomAuthenticationProvider authProvider = new CustomAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(encoder());
return authProvider;
}
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder(11);
}
@Bean
public SessionRegistry sessionRegistry() {
return new SessionRegistryImpl();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
По задумке пользователь жмет "Add account" делает некие манипуляции и после его аккаунт должен будет появиться ниже уже добавленного, как реализовать...
Вопрос, каким образом можно реализовать аналогhtaccess ,чтобы при ошибке 404 сервер редиректил на другую страницу, а не отображалось окно с ошибкой
У меня есть адаптер, который заполняет RecyclerViewПрочитав форумы понял что обработчик нажатий необходимо сделать тоже в адаптере
Добрый день! Помогите разобратьсяЕсть два класса: Tree и List