Giter Club home page Giter Club logo

cas-spring-boot-starter's Introduction

CAS 单点登陆 spring boot starter

GitHub stars GitHub forks GitHub watchers GitHub followers

GitHub issues GitHub license GitHub last commit GitHub release GitHub repo size in bytes HitCount language Build Status


安装

maven

1.添加JitPack仓库到pom.xml

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

2.添加依赖

<dependency>
    <groupId>com.github.itning</groupId>
    <artifactId>cas-spring-boot-starter</artifactId>
    <version>1.2.0-RELEASE</version>
</dependency>

gradle

1.Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

2.Add the dependency

dependencies {
	implementation 'com.github.itning:cas-spring-boot-starter:1.2.0-RELEASE'
}

使用

配置

在yml或properties中配置

哈尔滨信息工程学院的同学点我

属性 说明 默认
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,即如果你不自己实现接口则会使用默认的实现

各个接口的作用请看接口注释。

写两个类实现 callback和config 包下的接口

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<String, String> attributesMap) throws IOException, ServletException {

    }

    @Override
    public void onOptionsHttpMethodRequest(HttpServletResponse resp, HttpServletRequest req) throws IOException, ServletException {

    }
}
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<String, String> 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路径?

    只需在过滤器初始化之前调用该静态方法:

    top.itning.cas.CasAutoConfigure.setUrlPatterns(String... urlPatterns);

    源码:

    /**
    * 设置拦截路径
    *
    * @param urlPatterns 路径
    */
    public static void setUrlPatterns(String... urlPatterns) {
    	up = urlPatterns;
    }

流程

流程图

cas-spring-boot-starter's People

Contributors

itning avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

marc45

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.