JPA + MySql + Реализовать зашифрованный пароль - PullRequest
3 голосов
/ 02 августа 2020

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

Я просмотрел много вопросов, но ни один из них не помог мне и не ответил на мой вопрос, учитывая, что он должен генерироваться автоматически. Также я хотел бы решить это элегантным способом без жесткого кодирования и прочего, если это возможно. Я был бы очень рад, если бы кто-нибудь мог помочь мне, так как я новичок, заранее спасибо!

Вопрос:

Как мне автоматически генерировать безопасные зашифрованные пароли, какой тип данных я должен использовать в Java (в настоящее время String), а затем к какому типу базы данных он сопоставлен?

Как мне убедиться, что я могу расшифровать пароль базы данных, чтобы проверить, соответствует ли он, когда кто-то входит в систему?

Пользовательский объект:

@Entity
public class User {

    @Id
    @GeneratedValue
    private Integer user_id;
    
    @Column(unique = true)
    private String username;
    
    private String password;
    
    @Enumerated(EnumType.STRING)
    private Role role;
    
    //non-Owning (address) side of the OneToOne relationship
    @OneToOne(mappedBy = "user")
    private RetailStore retailStore;

    /**
     * Constructor
     */
    protected User() {
        
    }
    
    /**
     * Constructor
     * @param username
     * @param role
     */
    public User(String username, String password, Role role) {
        super();
        this.username = username;
        this.password = password;
        this.role = role;
    }

Пользовательский репозиторий:

@Repository
@Transactional
//necessary to be in an transaction to change something in database, 
//instead of doing this for every method itself it is declared by 
//the annotation @Transactional
public interface UserRepository extends JpaRepository<User, Long>{
    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...