Size: a a a

Spring Framework and more

2019 September 02

PD

Plomipu Dmitri in Spring Framework and more
✔️Alexey Draznin
А версия спринга какая?
теперь всё. Т.е. вы предлагаете использовать энкодер по умолчанию и просто строчку {bcrypt} перед конфигурируемым пароле поставить, чтобы энкодер нашёл алго шифрования ?? Если да то вроде бы я так делал.
источник

✔D

✔️Alexey Draznin in Spring Framework and more
Plomipu Dmitri
теперь всё. Т.е. вы предлагаете использовать энкодер по умолчанию и просто строчку {bcrypt} перед конфигурируемым пароле поставить, чтобы энкодер нашёл алго шифрования ?? Если да то вроде бы я так делал.
Нет, если использовать бкрипт энкодер то нужен прификс бкрипт
источник

PD

Plomipu Dmitri in Spring Framework and more
✔️Alexey Draznin
Нет, если использовать бкрипт энкодер то нужен прификс бкрипт
странно. Все равно не работает:

final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
final List<GrantedAuthority>autorities = new ArrayList<GrantedAuthority>();
autorities.add(new SimpleGrantedAuthority("USER"));
authenticationManagerBuilder
.userDetailsService(customUserDetailsService)
.and()
.inMemoryAuthentication()
.withUser("DefUser")
.password(encoder.encode("{bcrypt}123123"))
.authorities(autorities);
источник

RS

Ruslan Stelmachenko in Spring Framework and more
префикс нужен если используется дефолтный в буте DelegatingPasswordEncoder. По вашему стектрейсу видно, что у вас именно он используется.

для конкретного энкодера (например BCryptPasswordEncoder) префикс НЕ нужен.

вы можете закодировать пароль с помощью BCryptPasswordEncoder и потом декодировать его с помощью DelegatingPasswordEncoder, если поставите префик {bcrypt} к ЗАКОДИРОВАННОМУ значению, а не сырому.

либо вы можете напрямую использовать BCryptPasswordEncoder и для кодирования, и для проверки, тогда префикс в запомненном значении не нужен. Но тогда вы должны же сообщить AuthenticationManager-у о том, что вы хотите использовать BCryptPasswordEncoder, а не DelegatingPasswordEncoder. А вы этого тоже не сделали. После inMemoryAuthentication() можно задать passwordEncoder().
источник

✔D

✔️Alexey Draznin in Spring Framework and more
Ruslan Stelmachenko
префикс нужен если используется дефолтный в буте DelegatingPasswordEncoder. По вашему стектрейсу видно, что у вас именно он используется.

для конкретного энкодера (например BCryptPasswordEncoder) префикс НЕ нужен.

вы можете закодировать пароль с помощью BCryptPasswordEncoder и потом декодировать его с помощью DelegatingPasswordEncoder, если поставите префик {bcrypt} к ЗАКОДИРОВАННОМУ значению, а не сырому.

либо вы можете напрямую использовать BCryptPasswordEncoder и для кодирования, и для проверки, тогда префикс в запомненном значении не нужен. Но тогда вы должны же сообщить AuthenticationManager-у о том, что вы хотите использовать BCryptPasswordEncoder, а не DelegatingPasswordEncoder. А вы этого тоже не сделали. После inMemoryAuthentication() можно задать passwordEncoder().
помоему это не так(префикс нужен в любом случаи), но ок
источник

RS

Ruslan Stelmachenko in Spring Framework and more
✔️Alexey Draznin
помоему это не так(префикс нужен в любом случаи), но ок
нет, это не так. префикс нужен лишь для того, чтобы DelegatingPasswordEncoder смог понять, к какому делегату делегировать проверку пароля. перед передачей заэнкоденного значения делегату, префикс убирается.
источник

✔D

✔️Alexey Draznin in Spring Framework and more
Ruslan Stelmachenko
нет, это не так. префикс нужен лишь для того, чтобы DelegatingPasswordEncoder смог понять, к какому делегату делегировать проверку пароля. перед передачей заэнкоденного значения делегату, префикс убирается.
может конечно я не прав, что скорее всего. Но при таком подходе:

@Bean
   public PasswordEncoder passwordEncoder() {
       return new BCryptPasswordEncoder();
   }

спринг просит явно указать префикс
источник

✔D

✔️Alexey Draznin in Spring Framework and more
при делегаторе скорее всего да
источник

RS

Ruslan Stelmachenko in Spring Framework and more
✔️Alexey Draznin
может конечно я не прав, что скорее всего. Но при таком подходе:

@Bean
   public PasswordEncoder passwordEncoder() {
       return new BCryptPasswordEncoder();
   }

спринг просит явно указать префикс
где просит?
источник

✔D

✔️Alexey Draznin in Spring Framework and more
Ruslan Stelmachenko
где просит?
во время декода пассворда
источник

RS

Ruslan Stelmachenko in Spring Framework and more
а для декода пассворда какой энкодер используется?
источник

✔D

✔️Alexey Draznin in Spring Framework and more
тот же самый
источник

RS

Ruslan Stelmachenko in Spring Framework and more
вы в этом уверены? то, что создан такой бин, вовсе не значит, что именно он будет использоваться для декодинга
источник

✔D

✔️Alexey Draznin in Spring Framework and more
да, всего скорее в этом и есть проблема, я к сожалению уже не помню полной проблемы, это было в давнем проекте
источник

TZ

Tamerlan Zhabassov in Spring Framework and more
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");

       App app = (App) ctx.getBean();
источник

TZ

Tamerlan Zhabassov in Spring Framework and more
пишет что метода getBean не существует
источник

TZ

Tamerlan Zhabassov in Spring Framework and more
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

   <bean id="client" class="main.com.epam.spring.Client">
       <constructor-arg index="0" value="1"/>
       <constructor-arg index="1" value="John"/>
   </bean>

   <bean id="eventLogger" class="main.com.spring.service.ConsoleEventLogger"/>

   <bean id="app" class="main.com.spring.App">
       <constructor-arg ref="client"/>
       <constructor-arg ref="eventLogger"/>
   </bean>

</beans>
источник

TZ

Tamerlan Zhabassov in Spring Framework and more
можете помочь ,не могу понять в чем дело, вроде бы в ApplicationContext есть метод getBean, а у меня ide показывает что его нет
источник

А

Артем Артемович Артемовский in Spring Framework and more
идея говорит или компилятор?
источник

А

Артем Артемович Артемовский in Spring Framework and more
идею иногда перекашивает
источник