CAS数据库身份验证不起作用

继续我以前的question。我正在CAS 5上根据自己的需求进行修改。现在,借助CAS tutorial,我完成了自定义身份验证。现在,我已将以下依赖项添加到pom.xml中,以通过遵循link连接到数据库。

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>

并在application.properties

中添加了数据库身份验证属性
cas.authn.jdbc.query[0].sql=some query
cas.authn.jdbc.query[0].url=jdbc:postgresql://127.0.0.1/dbcas
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.PostgreSQLDialect
cas.authn.jdbc.query[0].user=readonly
cas.authn.jdbc.query[0].password=readonly
cas.authn.jdbc.query[0].ddlAuto=none
cas.authn.jdbc.query[0].driverClass=org.postgresql.Driver

但这不起作用意味着获取

  

类型   'org.apereo.cas.configuration.model.support.jdbc.QueryJdbcAuthenticationProperties'   没有属性“ url”

我在这里错过了什么吗?任何人都可以帮助我。

更新

我已经检查了QueryJdbcAuthenticationProperties的来源

@RequiredProperty
private String sql;

还有AbstractJpaProperties

private String dialect;
private String ddlAuto;
@RequiredProperty
private String driverClass;
@RequiredProperty
private String url;
@RequiredProperty
private String user;
@RequiredProperty
private String password;

我在cas-server-core-api-configuration-model-5.3.2.jar文件中找到了相同的两个类,而在其他任何package和jar文件中都找不到这两个类。

这是什么问题。我无法识别它。

  

如何知道这些属性(cas.authn.jdbc.query)在哪里   定义?

我认为在定义这些数据库属性时已使用子类QueryJdbcAuthenticationProperties创建了对象。

xiaoman1987 回答:CAS数据库身份验证不起作用

当您查看所描述的类时,i。 e。 AbstractJpaPropertiesQueryJdbcAuthenticationProperties,您会在开头看到以下内容:

// ...
import lombok.Getter;
import lombok.Setter;

// ...
@Getter
@Setter
public abstract class AbstractJpaProperties implements Serializable {

    // ...
    @RequiredProperty
    private String url = "jdbc:hsqldb:mem:cas-hsql-database";

并且该字段没有getter和setter。这意味着Lombok负责在编译时生成它们。如果直接从cas-server-core-api-configuration-model-5.3.2.jar打开类,则IDE应该在类大纲中(仅在已编译的类中)向您显示getter和setter。

那么,也许您尝试自己构建那些类(或整个CAS?),而无需在构建路径中使用Lombok库?因此,您会收到错误:

  

类型'org.apereo.cas.configuration.model.support.jdbc.QueryJdbcAuthenticationProperties'没有属性'url'

如果是这样,我建议您改为使用CAS WAR Overlay Installation-一般CAS用法通常更容易。如果您仍然需要接触这些课程,则需要设置我上面提到的Lombok。

最后,正如Karan所写,您可能还需要在PostgreSQL驱动程序上添加适当的依赖项,以便在应用程序进一步执行时,您不会得到NoClassDefFoundError或类似的内容。

,

您的属性已正确设置。但是,对于某些数据库,CAS 5.x另外需要驱动程序(并非总是如此)。如果您可以将以下内容作为依赖项包含在pom中,则它应提供postgres driver support

中指定的必要驱动程序

更新您的pom以包括:

<dependency>
     <groupId>org.apereo.cas</groupId>
     <artifactId>cas-server-support-jdbc-drivers</artifactId>
     <version>${cas.version}</version>
</dependency>
本文链接:https://www.f2er.com/2936422.html

大家都在问