若依前后端分离(Spring Security)整合CAS Client实现一对多绑定(二)
若依前后端分离(Spring Security)整合CAS Client实现一对多绑定(二)文章目录若依前后端分离(Spring Security)整合CAS Client实现一对多绑定(二)前言后端1. 修改application-dev.yml2. 修改DataSourceType3. 修改DruidConfig4.实现IBindUserService接口5. 编写对应的Mapper类及map
·
若依前后端分离(Spring Security)整合CAS Client实现一对多绑定(二)
文章目录
前言
针对CAS Server搭建了一个单独的管理端,登录采用单点登录,用于管理CAS Server User与 Cas Client User的绑定关系
该文章主要演示如何将Cas Client User接入该服务进行管理配置。
后端
1. 修改application-dev.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
# nullCatalogMeansCurrent=true 解决 mysql-connector-mysql 8.0 (spring-boot-starter-parent 管理的版本) + Activiti 6.x 自动建表失败
url: jdbc:mysql://CAS Server数据库IP:端口/数据库?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: 账号
password: 密码
多数据源的名称(后续会用到,保持唯一,可以配置多个):
# nullCatalogMeansCurrent=true 解决 mysql-connector-mysql 8.0 (spring-boot-starter-parent 管理的版本) + Activiti 6.x 自动建表失败
url: jdbc:mysql://CAS Client数据库IP:端口/数据库?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: 账号
password: 密码
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username:
login-password:
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
2. 修改DataSourceType
package com.ruoyi.common.enums;
/**
* 数据源
*
* @author ruoyi
*/
public enum DataSourceType
{
/**
* 主库
*/
MASTER,
/**
* 从库
*/
SLAVE,
/**
* 上一步多数据源的名称
*/
多数据源的名称,
}
3. 修改DruidConfig
路径:com.ruoyi.framework.config.DruidConfig
/**
* 配置多数据源
* @param druidProperties
* @return
*/
@Bean
@ConfigurationProperties("spring.datasource.druid.第一步多数据源的名称")
public DataSource 多数据源的名称DataSource(DruidProperties druidProperties) {
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource)
{
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
setDataSource(targetDataSources, DataSourceType.多数据源的名称.name(), "多数据源的名称DataSource");
return new DynamicDataSource(masterDataSource, targetDataSources);
}
4. 实现IBindUserService接口
路径:com.ruoyi.system.binduser.service.IBindUserService
package com.ruoyi.system.binduser.service.impl;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.binduser.domain.BindUser;
import com.ruoyi.system.binduser.domain.model.BindUserListQueryBody;
import com.ruoyi.system.binduser.mapper.BindUserFor你的数据源Mapper;
import com.ruoyi.system.binduser.service.IBindUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @ClassName UserBindServiceFor你的数据源Impl
* @Author xu
* @Date 2021/5/12 14:15
* @Version 1.0
*/
@Service("你的数据源(首字母小写)Service")
@DataSource(DataSourceType.你的数据源)
public class BindUserServiceFor你的数据源Impl implements IBindUserService {
private static final Logger log = LoggerFactory.getLogger(BindUserServiceFor你的数据源Impl.class);
@Resource
private BindUserFor你的数据源Mapper userMapper;
/**
* 根据条件分页查询用户列表
*
* @param queryBody 用户信息
* @return 用户信息集合信息
*/
@Override
public List<BindUser> selectUserList(BindUserListQueryBody queryBody) {
return userMapper.selectUserList(queryBody);
}
/**
* 绑定用户
* @param userId
* @param casUserName
* @return
*/
@Override
public int bind(Long userId, String casUserName) {
return userMapper.bind(userId, casUserName);
}
/**
* 解绑用户
* @param userId
* @return
*/
@Override
public int unbind(Long userId) {
return userMapper.unbind(userId);
}
}
5. 编写对应的Mapper类及mapper.xml
mapper路径:com.ruoyi.system.binduser.mapper
xml路径:resource.mapper.system.user
更多推荐
已为社区贡献4条内容
所有评论(0)