Spring Boot, Spring security, связанный с базой данных



Заранее прошу прощения за мой плохой английский..



Я новичок с весной. Коллега посоветовал мне для начала использовать Spring boot. На данный момент мне это нравится.



Для начала я хочу создать модуль аутентификации / входа, связанный с базой данных mySQL.



Я работаю над IntelliJ и phpMyAdmin.



Для этой работы есть 3 части:

- Система аутентификации-OK

- Ссылка на базу данных и основные операции-OK

- Связь между аутентификацией и базой данных - НЕ В ПОРЯДКЕ.






На данный момент для аутентификации у меня есть этот файл:



WebSecurityConfig.java



package hello;

//imports


@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {



@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}






Для подключения моего приложения к базе данных у меня есть этот файл:



Применение.свойства



spring.datasource.url = jdbc:mysql://localhost/simulateur
spring.datasource.username = root
spring.datasource.password =

# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

# Show or not log for each sql query
spring.jpa.show-sql = true

# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update

# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager)

# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect


Мне нравится это решение, потому что это решение remember me с игровыми рамками и решение на моей антрепризе. Я хочу сохранить этот файл: заявление.свойства. Один конфигурационный файл кажется мне отличный.







Чтобы связать все это, я нашел решение на этом веб-сайте .
Я должен добавить это в свой WebSecurityConfig.java :

@Autowired
DataSource dataSource;

@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {

auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username,password, enabled from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
}




И добавьте это в файл MvcConfig.java с маршрутами и другими функциями с правильными параметрами:



@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver");
driverManagerDataSource.setUrl("jdbc:mysql://localhost/simulateur");
driverManagerDataSource.setUsername("root");
driverManagerDataSource.setPassword("");
return driverManagerDataSource;
}






Моя проблема заключается в том, что у меня сложилось впечатление, что я переопределяю подключение к базе данных. Я хотел бы использовать мой файл : приложение.свойства .
У тебя есть идея? использовать этот файл и не использовать часть кода в MvcConfig.Ява ?







Заранее благодарю вас за помощь ! :)

793   2  

2 ответов:

В spring boot у вас есть два способа определения источника данных, либо вы определяете его в приложении.свойства, или вы делаете это программно. Если вам не требуется какая-то очень специфическая конфигурация или у вас есть несколько источников данных, вы должны определить конфигурацию источника данных в своем приложении.свойства таким образом springboot будет автоматически настраивать все для вас.

В приведенном примере вы определяете источник данных дважды, вы должны удалить MvcConfig.Ява.

Я рекомендую вам прочитать эту статью о том, как работать с базами данных sql и spring boot Работа с базами данных SQL

server.port = 8084  
#create  and drop tables and sequences, loads import.sql
spring.jpa.hibernate.ddl-auto=update

# MySQL settings
#spring.datasource.url=jdbc:Mysql://localhost:3306/simplehr
spring.datasource.url=jdbc:mysql://localhost:3306/myProject
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.show-sql=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# HikariCP settings
 spring.datasource.hikari.*

spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=5

# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - 
%msg%n
logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
logging.level.=error

spring.mvc.view.prefix:/WEB-INF/jsp/
spring.mvc.view.suffix:.jsp

Comments

    Ничего не найдено.