首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用jasypt登录数据库

问无法使用jasypt登录数据库
EN

Stack Overflow用户
提问于 2018-09-03 19:31:32
回答 1查看 315关注 0票数 0

您好,我在Spring启动应用程序中使用了下面的maven依赖项。

代码语言:javascript
复制
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>1.16</version>
</dependency>

我使用下面的命令来加密我的数据库密码。

代码语言:javascript
复制
encrypt input="test" password=test algorithm=PBEWithMD5AndDES

在我的application.properties中,我有以下属性,

代码语言:javascript
复制
spring.datasource.url=jdbc:sqlserver://localhost:1234;database=TEST_DB
spring.datasource.username=test
spring.datasource.password=ENC(OPdJ9jOw7tbJR+MlptpCHg==)
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.poolName=SpringBootHikariCP
spring.datasource.maximumPoolSize=50
spring.datasource.minimumIdle=30
spring.datasource.maxLifetime=2000000
spring.datasource.connectionTimeout=30000
spring.datasource.idleTimeout=30000
spring.datasource.pool-prepared-statements=true
spring.datasource.max-open-prepared-statements=250

在我的应用程序代码中,我能够获得spring.datasource.password属性值的解密。但是当我使用JDBCTemplate时,我遇到了异常。

编辑:

错误地添加了错误的堆栈跟踪。下面是正确的一条。由于3次尝试失败,密码已过期。

代码语言:javascript
复制
[ERROR] 2018-09-03 04:50:45.578 [https-jsse-nio-8092-exec-9] util -  LOG  : Class :Controller|| Method :process || org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'test'. ClientConnectionId:ba0abe4d-014a-42d3-b39e-ec1efc0e7131
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:394)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:474)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:484)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:494)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:500)
at com.test.dao.AppDaoImpl.generateQuery(AppDaoImpl.java:77)
at com.test.dao.AppDaoImpl$$FastClassBySpringCGLIB$$5d4e5540.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at com.test.dao.AppDaoImpl$$EnhancerBySpringCGLIB$$eb86c18b.generateQuery(<generated>)

无法登录到数据库。下面是我的AppDaoImpl.java

代码语言:javascript
复制
    @Repository
public class AppDaoImpl implements AppDao {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public Integer generateQuery(String id) throws ImpsException {
        return jdbcTemplate.update(QueryConst.SQL_INSERT_QUERY, id);
    }
    }

在jasypt之前,我只是在自动安装我的JDBCTemplate,一切都运行得很好。现在它无法登录。

PS:我正在运行我的应用程序

代码语言:javascript
复制
-Djasypt.encryptor.password=test -Djasypt.encryptor.algorithm=PBEWithMD5AndDES
EN

回答 1

Stack Overflow用户

发布于 2018-09-03 19:40:26

从消息Reason: The password of the account has expired.可以清楚地看出,密码已过期。

以系统管理员身份登录到SQL server。将密码更改为其他密码。确保“强制密码策略”处于关闭状态,然后将密码更改回原始密码。

或

右键单击“用户名”并转到“属性”

您可以在登录属性窗口中找到“强制密码过期”,该窗口需要取消选中。

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52148946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档