# cas-spring-boot-starter
**Repository Path**: aye_happy/cas-spring-boot-starter
## Basic Information
- **Project Name**: cas-spring-boot-starter
- **Description**: Spring Boot Starter CAS实现SSO单点登录框架,回调方式实现统一登陆。简单方便,一步到位!
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-09-08
- **Last Updated**: 2021-09-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
CAS 单点登陆 spring boot starter
[](https://github.com/itning/cas-spring-boot-starter/stargazers)
[](https://github.com/itning/cas-spring-boot-starter/network/members)
[](https://github.com/itning/cas-spring-boot-starter/watchers)
[](https://github.com/itning?tab=followers)
[](https://github.com/itning/cas-spring-boot-starter/issues)
[](https://github.com/itning/cas-spring-boot-starter/blob/master/LICENSE)
[](https://github.com/itning/cas-spring-boot-starter/commits)
[](https://github.com/itning/cas-spring-boot-starter/releases)
[](https://github.com/itning/cas-spring-boot-starter)
[](http://hits.dwyl.io/itning/cas-spring-boot-starter)
[](https://github.com/itning/cas-spring-boot-starter)
[](https://jitpack.io/#itning/cas-spring-boot-starter)
[](https://travis-ci.org/itning/cas-spring-boot-starter)
---
## 安装
[](https://jitpack.io/#itning/cas-spring-boot-starter)
## maven
1.添加JitPack仓库到pom.xml
```xml
jitpack.io
https://jitpack.io
```
2.添加依赖
```xml
com.github.itning
cas-spring-boot-starter
1.2.0-RELEASE
```
## gradle
1.Add it in your root build.gradle at the end of repositories:
```groovy
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```
2.Add the dependency
```groovy
dependencies {
implementation 'com.github.itning:cas-spring-boot-starter:1.2.0-RELEASE'
}
```
## 使用
### 配置
#### 在yml或properties中配置
[哈尔滨信息工程学院的同学点我](https://github.com/itning/cas-spring-boot-starter/tree/master/pic/config)
| 属性 | 说明 | 默认 |
| :-------------------------: | :----------------------------------: | :----------------: |
| cas.allow-cors | 是否允许跨域 | true |
| cas.debug | 调试模式 | false |
| cas.client-login-path | 登陆地址(访问该地址会跳转到loginUrl) | /login |
| cas.client-logout-path | 登出地址(访问该地址会跳转到登出地址) | /logout |
| cas.session-attribute-name | 存储获取到的Attributes的Session Name | \_cas_attributes_ |
| cas.request-connect-timeout | 请求连接超时(ms) | 15000 |
| cas.request-read-timeout | 请求读超时(ms) | 5000 |
| cas.local-server-url | 本地服务端地址(该项目地址) | null |
| cas.login-success-url | 登陆成功后跳转的网址 | null |
| cas.login-url | 登陆地址(CAS服务端地址) | null |
| cas.logout-url | 登出网址(CAS服务端地址) | null |
| cas.server-url | CAS服务端地址 | null |
| cas.exclude | 排除过滤地址(会排除以其开头的请求) | |
| cas.enabled | 是否开启 | true |
**注意:默认为null的必须配置**
#### 实现登陆状态回调
**回调有默认实现类: [CasAutoConfigure](https://github.com/itning/cas-spring-boot-starter/blob/master/src/main/java/top/itning/cas/CasAutoConfigure.java)**,即**如果你不自己实现接口则会使用默认的实现**
各个接口的作用请看接口注释。
写两个类实现 [callback和config](https://github.com/itning/cas-spring-boot-starter/tree/master/src/main/java/top/itning/cas) 包下的接口
```java
import top.itning.cas.callback.login.ILoginFailureCallBack;
import top.itning.cas.callback.login.ILoginNeverCallBack;
import top.itning.cas.callback.login.ILoginSuccessCallBack;
import top.itning.cas.callback.option.IOptionsHttpMethodCallBack;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author itning
* @date 2019/6/23 10:26
*/
public class CallBackImpl implements ILoginFailureCallBack, ILoginNeverCallBack, ILoginSuccessCallBack, IOptionsHttpMethodCallBack {
@Override
public void onLoginFailure(HttpServletResponse resp, HttpServletRequest req, Exception e) throws IOException, ServletException {
}
@Override
public void onNeverLogin(HttpServletResponse resp, HttpServletRequest req) throws IOException, ServletException {
}
@Override
public void onLoginSuccess(HttpServletResponse resp, HttpServletRequest req, Map attributesMap) throws IOException, ServletException {
}
@Override
public void onOptionsHttpMethodRequest(HttpServletResponse resp, HttpServletRequest req) throws IOException, ServletException {
}
}
```
```java
import top.itning.cas.config.IAnalysisResponseBody;
import top.itning.cas.config.ICheckIsLoginConfig;
import top.itning.cas.config.INeedSetMap2SessionConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* @author itning
* @date 2019/6/23 10:27
*/
public class ConfigImpl implements IAnalysisResponseBody, ICheckIsLoginConfig, INeedSetMap2SessionConfig {
@Override
public Map analysisBody2Map(String body) {
return null;
}
@Override
public boolean isLogin(HttpServletResponse resp, HttpServletRequest req) {
return false;
}
@Override
public boolean needSetMapSession() {
return false;
}
}
```
## 如何
1. 如何获取CAS服务器登陆后传过来的属性?
我们将它放在session中了,你可以使用 ```HttpSession#getAttribute``` 方法来获取,参数默认为```_cas_attributes_```,当然你可以在配置中更改```cas.session-attribute-name```的值
2. 如何配置只过滤某些URL路径?
只需在**过滤器初始化之前**调用该静态方法:
```java
top.itning.cas.CasAutoConfigure.setUrlPatterns(String... urlPatterns);
```
源码:
```java
/**
* 设置拦截路径
*
* @param urlPatterns 路径
*/
public static void setUrlPatterns(String... urlPatterns) {
up = urlPatterns;
}
```
## 流程
