在 sql 服务器和 sprig 数据 r2dbc 中加密参数
encrypt parameter in sql server and sprig data r2dbc
我正在使用 Spring 数据 R2DBC,我可以使用以下代码在本地主机中连接我的项目和我的数据库:
public class R2dbcConfig extends AbstractR2dbcConfiguration {
private final ApplicationDatabaseProperties applicationDatabaseProperties;
@Bean
@Override
public ConnectionFactory connectionFactory() {
return new MssqlConnectionFactory(
MssqlConnectionConfiguration.builder()
.host(applicationDatabaseProperties.getHost())
.port(applicationDatabaseProperties.getPort())
.username(applicationDatabaseProperties.getUsername())
.password(applicationDatabaseProperties.getPassword())
.database(applicationDatabaseProperties.getDatabase())
.build());
}
@Bean
public DatabaseClient databaseClient(ConnectionFactory connectionFactory) {
return DatabaseClient.create(connectionFactory);
}
}
很明显,applicationDatabaseProperties 具有数据库连接参数,但在其他环境中,我有这样的连接字符串:
jdbc:sqlserver://[myhost]:1433;database=[mydatabase];user=[myUser];password={your_password_here};encrypt=true;trustServerCertificate=false;hostNameInCertificate=[myhostNameInCertificate];loginTimeout=30;
我使用了 MssqlConnectionFactory (mssql),我可以查看主机、端口、数据库、用户和密码,但我无法将加密参数设置为 true,有没有办法使用它来设置此参数class(MssqlConnectionFactory 和 MssqlConnectionConfiguration)。
感谢您的回答。
按照文档,您可以通过编程方式创建 ConnectionFactory
和 Connection
对象。
@Bean
@Override
public ConnectionFactory connectionFactory() {
final ConnectionFactoryOptions options = builder()
.option(DRIVER, "sqlserver")
.option(HOST, applicationDatabaseProperties.getHost())
.option(PORT, applicationDatabaseProperties.getPort())
.option(USER, applicationDatabaseProperties.getUsername())
.option(PASSWORD, applicationDatabaseProperties.getPassword())
.option(DATABASE, applicationDatabaseProperties.getDatabase())
.option(Option.valueOf("[ANOTHER_OPTION]","[ANOTHER_VALUE"))
.build();
return ConnectionFactories.get(options);
}
在这种情况下,您可以放置您需要的任何其他参数,例如:
.option(Option.valueOf("encrypt", Boolean.TRUE))
我正在使用 Spring 数据 R2DBC,我可以使用以下代码在本地主机中连接我的项目和我的数据库:
public class R2dbcConfig extends AbstractR2dbcConfiguration {
private final ApplicationDatabaseProperties applicationDatabaseProperties;
@Bean
@Override
public ConnectionFactory connectionFactory() {
return new MssqlConnectionFactory(
MssqlConnectionConfiguration.builder()
.host(applicationDatabaseProperties.getHost())
.port(applicationDatabaseProperties.getPort())
.username(applicationDatabaseProperties.getUsername())
.password(applicationDatabaseProperties.getPassword())
.database(applicationDatabaseProperties.getDatabase())
.build());
}
@Bean
public DatabaseClient databaseClient(ConnectionFactory connectionFactory) {
return DatabaseClient.create(connectionFactory);
}
}
很明显,applicationDatabaseProperties 具有数据库连接参数,但在其他环境中,我有这样的连接字符串:
jdbc:sqlserver://[myhost]:1433;database=[mydatabase];user=[myUser];password={your_password_here};encrypt=true;trustServerCertificate=false;hostNameInCertificate=[myhostNameInCertificate];loginTimeout=30;
我使用了 MssqlConnectionFactory (mssql),我可以查看主机、端口、数据库、用户和密码,但我无法将加密参数设置为 true,有没有办法使用它来设置此参数class(MssqlConnectionFactory 和 MssqlConnectionConfiguration)。
感谢您的回答。
按照文档,您可以通过编程方式创建 ConnectionFactory
和 Connection
对象。
@Bean
@Override
public ConnectionFactory connectionFactory() {
final ConnectionFactoryOptions options = builder()
.option(DRIVER, "sqlserver")
.option(HOST, applicationDatabaseProperties.getHost())
.option(PORT, applicationDatabaseProperties.getPort())
.option(USER, applicationDatabaseProperties.getUsername())
.option(PASSWORD, applicationDatabaseProperties.getPassword())
.option(DATABASE, applicationDatabaseProperties.getDatabase())
.option(Option.valueOf("[ANOTHER_OPTION]","[ANOTHER_VALUE"))
.build();
return ConnectionFactories.get(options);
}
在这种情况下,您可以放置您需要的任何其他参数,例如:
.option(Option.valueOf("encrypt", Boolean.TRUE))