建设网站如何赢利,大型新型网站,百度优化大师,传统文化网站设计cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章
cas-client基于CAS协议客户端搭建-CSDN博客
cas-server5.3自定义密…cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章
cas-client基于CAS协议客户端搭建-CSDN博客
cas-server5.3自定义密码校验规则_cas-server 自定义加密验证-CSDN博客
CAS服务端的搭建并配置OAtuh2.0协议_cas oauth2.0-CSDN博客
添加pom依赖
dependencygroupIdorg.apereo.cas/groupIdartifactIdcas-server-support-jpa-service-registry/artifactIdversion${cas.version}/version
/dependency
dependencygroupIdorg.apereo.cas/groupIdartifactIdcas-server-core-services-api/artifactIdversion${cas.version}/version
/dependency
dependencygroupIdorg.apereo.cas/groupIdartifactIdcas-server-core-authentication-attributes/artifactIdversion${cas.version}/version
/dependency
添加配置
#数据库用户名
cas.serviceRegistry.jpa.userroot
#数据库密码
cas.serviceRegistry.jpa.passwordroot
#mysql驱动
cas.serviceRegistry.jpa.driverClasscom.mysql.cj.jdbc.Driver
#数据库连接
cas.serviceRegistry.jpa.urljdbc:mysql://localhost:3306/db_user?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueuseSSLfalse
cas.serviceRegistry.jpa.dialectorg.hibernate.dialect.MySQL5Dialect
#连接池配置
cas.serviceRegistry.jpa.pool.suspensionfalse
cas.serviceRegistry.jpa.pool.minSize6
cas.serviceRegistry.jpa.pool.maxSize18
cas.serviceRegistry.jpa.pool.maxWait2000
cas.serviceRegistry.jpa.pool.timeoutMillis1000
#默认为create-drop表示每次启动服务都会清除你之前注册的cas服务
cas.serviceRegistry.jpa.ddlAutoupdate
第一次启动需要将cas.serviceRegistry.jpa.ddlAuto设置为create-drop,启动后会创建如下表结构 编写逻辑
RestController
RequestMapping
public class RegistrationServiceController {AutowiredQualifier(servicesManager)private ServicesManager servicesManager;Autowiredprivate RegexregisteredserviceService regexregisteredserviceService;GetMapping(/addOAuth)public void addOAuthClient(RequestParam(serviceId) String serviceId,RequestParam(clientId) String clientId,RequestParam(clientSecret) String clientSecret,RequestParam(name)String name) {OAuthRegisteredService service new OAuthRegisteredService();ReturnAllAttributeReleasePolicy re new ReturnAllAttributeReleasePolicy();service.setClientId(clientId);service.setClientSecret(clientSecret);service.setServiceId(serviceId);service.setAttributeReleasePolicy(re);service.setName(name);servicesManager.save(service);// 执行load让他生效servicesManager.load();}GetMapping(/addCas)public void addOAuthClient(RequestParam(serviceId) String serviceId,RequestParam(name)String name) {RegexRegisteredService service new RegexRegisteredService();ReturnAllAttributeReleasePolicy re new ReturnAllAttributeReleasePolicy();service.setServiceId(serviceId);service.setAttributeReleasePolicy(re);service.setName(name);servicesManager.save(service);// 执行load让他生效servicesManager.load();}GetMapping(/deleteService)public void deleteServiceClient(RequestParam(id) String id) {regexregisteredserviceService.removeById(id);// 执行load让他生效servicesManager.load();}
可以看到这个controller中最主要的就是ServicesManager 这个Bean,可以看一下它的源码,这里提供了对于服务操作的实现,这里我们主要用到的是load方法,其作用是当我们增加或删除一个服务后执行load()方法会使我们的修改生效,可以理解为是一个刷新的操作
其中这不分的参数,可以参考 resources.services下的json文件的参数来添加,
注意:添加cas服务使用到的是RegexRegisteredService,添加OAuth2服务使用到的是OAuthRegisteredService,不然数据库里的expression_type是区分不出来类型的