MySQL数据库支持

CAS服务器默认不支持数据库,登录页上可以看到有一条错误提示”Static Auentication”。

img.png

  1. 测试新建一个MySQL数据库,可以按需增加字段:

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    -- ----------------------------
    -- Table structure for cas_user_base
    -- ----------------------------
    DROP TABLE IF EXISTS `cas_user_base`;
    CREATE TABLE `cas_user_base`  (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `user_name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
        `user_psd` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
        PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 3 
        CHARACTER SET = utf8mb4 
        COLLATE = utf8mb4_unicode_ci 
        ROW_FORMAT = Dynamic;
    
  2. 插入测试一个数据

    1 admin 123456
    
  3. 用IDEA打开CAS服务器代码,在pom文件中增加jdbc支持:

    <!-- Database Authentication Begin -->
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-support-jdbc</artifactId>
        <version>${cas.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-support-jdbc-drivers</artifactId>
        <version>${cas.version}</version>
    </dependency>
    <!-- Database Authentication End -->
    
  4. 在application.properties增加数据库配置:

    cas.authn.jdbc.query[0].sql=SELECT * FROM cas_user_base WHERE user_name=?
    cas.authn.jdbc.query[0].url=jdbc:mysql://mysqlIP地址:mysql端口/库名?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
    cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
    cas.authn.jdbc.query[0].user=mysql账号
    cas.authn.jdbc.query[0].password=mysql密码
    cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
    cas.authn.jdbc.query[0].fieldPassword=user_psd
    
  5. 重新打包,替换cas.war。

  6. 启动服务器,浏览器打开http://127.0.0.1:8080/cas/login 报错信息也没有了。

    img.png

  7. 用测试账号密码可以登录成功

results matching ""

    No results matching ""