kisso的简单使用

本文展示了如何在SpringBoot项目中集成Kisso进行SSO登录。通过添加依赖、创建登录接口设置Cookie,以及配置拦截器进行请求拦截和验证,实现了简单单点登录功能。同时,提到了可以通过实现SSOHandlerInterceptor接口来自定义登录失败时的逻辑。
摘要由CSDN通过智能技术生成

官网

!!官网在此!!

安装

新建SpringBoot项目

此处不做详细介绍。

使用kisso

gradle添加依赖:

implementation("com.baomidou:kisso:3.8.1")

登录接口将 token 作为 Cookie

@PostMapping("do-login")
    public boolean doLogin(String username, String password, HttpServletRequest request, HttpServletResponse response) {
        log.info("username is: {} and password is: {}", username, password);
        if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) {
            throw new NullPointerException();
        }
        
        // 下面这两行代码是重点
        SSOToken token = SSOToken.create().setId(0).setIssuer(username).setOrigin(TokenOrigin.COOKIE).setUserAgent(request);
        SSOHelper.setCookie(request, response, token);
        
        return true;
    }

添加后,请求登录接口观察 Chrome DevTools 可以发现, Response Header 中出现了 Set-Cookie

响应头

ApplicationCookies 中也可以看到:

Application - Cookies

拦截请求

上面使用了 kisso 生成了 token 并设置 cookie,我们需要判断这个 token 是否合法,所以用到了 kisso 自带的拦截器 SSOSpringInterceptor,在配置类中增加拦截:

package com.example.kissodemo.config;

import com.baomidou.kisso.web.interceptor.SSOSpringInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author zhaokai
 * @since 2022-06-17
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        SSOSpringInterceptor ssoSpringInterceptor = new SSOSpringInterceptor();
        registry.addInterceptor(ssoSpringInterceptor).addPathPatterns("/**");
    }
}

如果想要在登录失败时,自定义某些逻辑,可以自己实现 SSOHandlerInterceptor 接口:

package com.example.kissodemo.config;

import com.baomidou.kisso.web.handler.SSOHandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author zhaokai
 * @since 2022-06-17
 */
public class MySSOHandlerInterceptor implements SSOHandlerInterceptor {
    
    @Override
    public boolean preTokenIsNullAjax(HttpServletRequest request, HttpServletResponse response) {
        // 做一些其他的处理
        return false;
    }

    @Override
    public boolean preTokenIsNull(HttpServletRequest request, HttpServletResponse response) {
        // 做一些其他的处理
        return false;
    }
}

然后在配置类中添加这个实现类就可以了:

在这里插入图片描述

最后

到此,一个非常简单的 kisso 使用的 demo 就完成了,其实 kisso 的功能远不止于此,后面文章中会总结一下更深层次的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值