Не могу вставить зашифрованный пароль в базу данных, используя bcryptpasswordencoder в Java [закрыто]

В классе IndexProcessor вам нужен способ установки флага, который сообщает потоку, который он должен будет завершить, подобно переменной run, которую вы использовали только в области класса.

Если вы хотите остановить поток, вы устанавливаете этот флаг и вызываете join() в потоке и ждите его завершения.

Убедитесь, что флаг является потокобезопасным с помощью изменчивой переменной или используя методы геттера и сеттера, которые синхронизируются с переменной, используемой в качестве флага.

public class IndexProcessor implements Runnable {

    private static final Logger LOGGER = LoggerFactory.getLogger(IndexProcessor.class);
    private volatile boolean running = true;

    public void terminate() {
        running = false;
    }

    @Override
    public void run() {
        while (running) {
            try {
                LOGGER.debug("Sleeping...");
                Thread.sleep((long) 15000);

                LOGGER.debug("Processing");
            } catch (InterruptedException e) {
                LOGGER.error("Exception", e);
                running = false;
            }
        }

    }
}

Затем в SearchEngineContextListener:

public class SearchEngineContextListener implements ServletContextListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(SearchEngineContextListener.class);

    private Thread thread = null;
    private IndexProcessor runnable = null;

    @Override
    public void contextInitialized(ServletContextEvent event) {
        runnable = new IndexProcessor();
        thread = new Thread(runnable);
        LOGGER.debug("Starting thread: " + thread);
        thread.start();
        LOGGER.debug("Background process successfully started.");
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        LOGGER.debug("Stopping thread: " + thread);
        if (thread != null) {
            runnable.terminate();
            thread.join();
            LOGGER.debug("Thread successfully stopped.");
        }
    }
}
0
задан Rashed 15 January 2019 в 23:07
поделиться

1 ответ

Spring security использует $ 2a $ BCrypt, который генерирует строку пароля длиной 60 символов. Пример: $2a$10$IvpDzjQ3RhFvIECF7r2muOlLsDFywkyGJNEg1q6OudgK9.2vkubfW, поэтому убедитесь, что в столбце паролей указано char(60) или varchar(60) как минимум

0
ответ дан 夢のの夢 15 January 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: