SpringBoot前后端分离整合cas
项目前端使用nginx启动,后端是多个springBoot应用;
nginx可以统一管理Cookie,避免出现跨域问题。
1、添加依赖
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-support-springboot</artifactId>
<version>3.6.2</version>
</dependency>
2、配置文件添加信息
cas:
# cas服务
server-url-prefix: http://cas.com/cas
# cas登录
server-login-url: http://cas.com/cas/login
validation-type: cas
# 自己系统登录地址
client-host-url: http://localhost:9080
# 不校验权限路径
ignorePattern: /admin/api/pvs
# cas回调地址
casLogin-url: http://cas.com/cas/login?service=http://localhost:9080/admin/loginApi/casLogin
# cas登出地址,需要专门登出时使用,系统登出时跳转到这个地址
casLogout-url: http://cas.com/cas/logout?service=http://localhost:9080
启动类添加@EnableCasClient
@EnableCasClient
public class StudyApplication {
public static void main(String[] args) {
SpringApplication.run(StudyApplication.class, args);
}
}
3、重写cas的重定向和授权
package com.hand.aml.config;
// 保存cas回调地址
public class CasParam {
public static String casLoginUrl;
}
使用ignorePattern添加不需要授权的url,如登出方法的url
@Configuration
public class SmsCasClientConfigurer implements CasClientConfigurer {
@Value("${host-url}")
private String serverName;
@Value("${ignorePattern}")
private String ignorePattern;
@Value("${cas.server-login-url}")
private String serverLoginUrl;
@Value("${casLogin-url}")
private String casLoginUrl;
@Override
public void configureAuthenticationFilter(FilterRegistrationBean authenticationFilter) {
Map initParameters = authenticationFilter.getInitParameters();
initParameters.