SSO单点登录(二)SpringBoot创建CAS客户端

SpringBoot集成cas-client 客户端配置拦截过滤,绝对最简单有效,亲测 我使用的cas-client客户端为2.0.0-GA。对于以前使用web.xml进行配置的只需要更改配置文件即可。此文我主要是针对用于SpringBoot集成客户端的过滤请求讲解。 由于最新的cas客户端只有server-url-prefix ,server-login-url,client-host-url,authentication-url-patterns等几个配置而取消了原xml中进行... 阅读详情

CAS创建服务端:SSO单点登录(一)创建CAS服务端_我是混IT圈的-优快云博客

由于CAS需要用到域名,所以需要把本地ip映射成域名,参考文档:Win10 如何把本地ip映射成域名_我是混IT圈的-优快云博客

cas客户端示例下载:https://github.com/cas-projects/cas-sample-java-webapp

这个CAS客户端是一个maven项目,可以参考,但是如果想要和springboot整合,可以看下面的配置。

SpringBoot创建CAS客户端如下:

SpringBoot的版本:

<version>2.4.10</version>

pom.xml:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--基于注解的配置 CAS,这个包是必须要的-->
        <dependency>
            <groupId>net.unicon.cas</groupId>
            <artifactId>cas-client-autoconfig-support</artifactId>
            <version>2.0.0-GA</version>
        </dependency>

配置文件:application.properties 

#端口号
server.port=8888
#CAS服务端的地址
cas.server-url-prefix=http://sso.cas.com:8080/cas
#客户端如果要登录,会跳转到统一的服务认证中的登录界面,也就是CAS服务端的登录地址
cas.server-login-url=http://sso.cas.com:8080/cas/login
#客户端在CAS服务端登录成功后,自动从CAS服务端跳转回客户端的地址
cas.client-host-url=http://a.cas.com:8888
#校验后的CAS服务端颁发给客户端的用户信息是否需要放入session中。session获取用户信息,key:_const_cas_assertion_  value:assertion
cas.use-session=true
#Ticket校验器使用 Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3
#不需要拦截的请求,可以用*做模糊匹配,多个用【|】竖线隔开
udf.ignorePattern=/home.html|/*.js|/*.css
#自定义拦截的路径
udf.ignoreUrlPatternType=com.example.casclienta.config.SimpleUrlPatternMatcherStrategy

配置文件中的一些url,根据实际情况来配置,因为为了让单点登录产生效果,所以必须要用域名才可以。

配置类:CasConfig

package com.example.casclientb.config;

import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.session.SingleSignOutFilter;
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.EventListener;
import java.util.HashMap;
import java.util.Map;

/**
 * Cas客户端的配置
 */
@Configuration
public class CasConfig {

    @Value("${cas.server-url-prefix}")
    private String serverUrlPrefix;
    @Value("${cas.server-login-url}")
    private String serverLoginUrl;
    @Value("${cas.client-host-url}")
    private String clientHostUrl;
    @Value("${udf.ignorePattern}")
    private String ignorePattern;
    @Value("${udf.ignoreUrlPatternType}")
    private String ignoreUrlPatternType;
    @Value("${cas.use-session}")
    private String useSession;


    /**
     * 登出过滤器(过滤器顺序有要求,先登出-》认证/授权过滤器-》校验过滤器-》request wraper 过滤器)
     * @return
     */
    @Bean
    public FilterRegistrationBean filterSingleRegistration() {
        final FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new SingleSignOutFilter());
        // 设定匹配的路径
        registration.addUrlPatterns("/*");
        Map<String,String> initParameters = new HashMap<>();
        //cas服务端的地址,意思是如果退出了,默认会跳转到这个服务里面去。
        initParameters.put("casServerUrlPrefix", serverUrlPrefix);
        registration.setInitParameters(initParameters);
        // 设定加载的顺序
        registration.setOrder(1);
        return registration;
    }
    /**
     * 添加监听器
     * 它是个登出监听器
     * @return
     */
    @Bean
    public ServletListenerRegistrationBean<EventListener> singleSignOutListenerRegistration() {
        ServletListenerRegistrationBean<EventListener> registrationBean = new ServletListenerRegistrationBean<>();
        registrationBean.setListener(new SingleSignOutHttpSessionListener());
        // 设定加载的顺序
        registrationBean.setOrder(1);
        return registrationBean;
    }

    /**
     * 配置认证/授权,也就是登录过滤器
     * @return
     */
    @Bean
    public FilterRegistrationBean filterAuthenticationRegistration() {
        final FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new AuthenticationFilter());
        // 设定匹配的路径
        registration.addUrlPatterns("/*");
        Map<String,String>  initParameters = new HashMap<>();
        //客户端如果要登录,会跳转到统一的服务认证中的登录界面,也就是CAS服务端的登录地址
        initParameters.put("casServerLoginUrl", serverLoginUrl);
        //客户端在CAS服务端登录成功后,自动从CAS服务端跳转回客户端的地址
        initParameters.put("serverName", clientHostUrl);

        //不需要拦截的请求,必须是正则表达式
        if(ignorePattern != null && !"".equals(ignorePattern)){
            initParameters.put("ignorePattern", ignorePattern);
        }
        //自定义鉴权
        if(ignoreUrlPatternType != null && !"".equals(ignoreUrlPatternType)){
            initParameters.put("ignoreUrlPatternType", ignoreUrlPatternType);
        }
        registration.setInitParameters(initParameters);
        // 设定加载的顺序
        registration.setOrder(2);
        return registration;
    }

    /**
     * 校验/验证过滤器 这里用的是 Cas30ProxyReceivingTicketValidationFilter
     * @return
     */
    @Bean
    public FilterRegistrationBean filterValidationRegistration() {
        final FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new Cas30ProxyReceivingTicketValidationFilter());
        // 设定匹配的路径
        registration.addUrlPatterns("/*");
        Map<String,String> initParameters = new HashMap<String, String>();
        //CAS服务端的地址
        initParameters.put("casServerUrlPrefix", serverUrlPrefix);
        //校验成功后,自动从CAS服务端跳转回客户端的地址,也是登录成功后跳转的地址
        initParameters.put("serverName", clientHostUrl);
        //校验后的CAS服务端颁发给客户端的用户信息是否需要放入session中。session获取用户信息,key:_const_cas_assertion_  value:assertion
        initParameters.put("useSession", useSession);
        registration.setInitParameters(initParameters);
        // 设定加载的顺序
        registration.setOrder(3);
        return registration;
    }

    /**
     * request wraper 过滤器
     * 重新包装 request 的过滤器
     * @return
     */
    @Bean
    public FilterRegistrationBean filterWrapperRegistration() {
        final FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new HttpServletRequestWrapperFilter());
        // 设定匹配的路径
        registration.addUrlPatterns("/*");
        // 设定加载的顺序
        registration.setOrder(4);
        return registration;
    }
}

自定义鉴权类:SimpleUrlPatternMatcherStrategy

import org.jasig.cas.client.authentication.UrlPatternMatcherStrategy;

import java.util.regex.Pattern;

/**
 * 自定义鉴权,简单的来说就是自定义需要或者不需要拦截的请求,并且对这些请求可以进行处理
 */
public class SimpleUrlPatternMatcherStrategy implements UrlPatternMatcherStrategy {

    //配置文件配置的不需要拦截的请求
    private Pattern pattern;

    @Override
    public boolean matches(String url) {
        //在此可以做额外的扩展,比如判断是insert也放行 可以通过查询数据库来进行动态判断
        if(url.contains("/insert")){
            return true;
        }
        //默认是根据 cas.ignore-pattern 来判断是否否满足过滤
        return this.pattern.matcher(url).find();
    }

    /**
     * 这个pattern就是 在 application.properties 中配置的 udf.ignorePattern
     * @param pattern
     */
    @Override
    public void setPattern(String pattern) {
        this.pattern = Pattern.compile(pattern);
    }
}

HomeController:

package com.example.casclientb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class HomeController {

    //首页,不需要登录就可以进来
    @GetMapping(value = "/home.html")
    public String index(HttpServletRequest request){
        return "home";
    }

    //详情页面,需要登录
    @GetMapping(value = "/details.html")
    public String list(HttpServletRequest request){
        //cas校验后保存到session中的用户信息,要在session中获取到这个信息,必须在配置中配置。
        Object assertion = request.getSession().getAttribute("_const_cas_assertion_");
        System.out.println(assertion);
        return "details";
    }
}

首页:home.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="/static/jquery.min.js"></script>
</head>
<body>
  <p>这里是淘宝首页,不需要登录</p>
    <a href="/details.html">详情</a>
</body>
</html>

详情页:details.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="static/jquery.min.js"></script>
</head>
<body>
    <span>这是淘宝详情页面,需要登录</span><br/>
    <a href="http://sso.cas.com:8080/cas/logout?service=http://a.cas.com:8888/home.html">退出</a><br/>
    <a href="/home.html">首页</a><br/>
</body>
</html>

 启动类,添加注解:

//启动CAS @EnableCasClient
@EnableCasClient

由于CAS是默认使用https的,那么为了能测试,需要把CAS服务端配置成能使用http协议。如何配置成http,那么看这篇文章:SSO单点登录(一)创建CAS服务端_我是混IT圈的-优快云博客

上面的配置都可以实现单点登录和单点退出的功能。

下一篇文章请期待:shiro和cas的整合。

SpringBoot整合CAS服务 本文描述了通过SpringBoot 项目连接CAS Server的完整实践过程。 阅读详情

相关推荐

cas实现sso单点登录(客户端)

springboot项目整合cas-client的代码实现。

qq_36090537的博客 1363

springboot整合Cas客户端搭建

1. 下载依赖包 git clone git@github.com:apereo/java-cas-client.git cd java-cas-client mvn clean package 通过Intelligent打开项目,可以看到如下模块: Cas-client-core:是核心功能,包含认证认证和校验的过滤器 Cas-client-suuport-springboot:集成了springboot的快速开发,也是最推荐的方式。 其他的模块通过名称也能看出来,暂且不细说。 ..

梦想起飞的地方......... 4599

springboot+vue+cas前后端分离实现单点登录

springboot+vue+cas前后端分离实现单点登录 提示:cas服务已经搭建完毕 文章目录前言一、CAS是什么?二、搭建客户端系统1.引入CAS2.客户端后端搭建总结 前言 什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分,如图(不标准,只是方便理解)。 一、CAS是什么? CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点

weixin_43483911的博客 6282

SpringBoot前后端分离整合cas(客户端)

cas认证详细流程:前后端分离:项目前端使用nginx启动,后端是springBoot服务;,避免出现跨域问题。

weixin_42949219的博客 2060

Spring Boot + OAuth2 统一认证SSO单点登录

需求:将项目从springSecurity验证登录改为统一认证sso登录,将原数据库中用户账号、密码、邮箱信息迁移至统一认证端数据中,保留原客户端项目的权限角色管理部分 最终选择spring boot +oauth2 ,用到 @EnableOAuth2Sso注解实现单点登录,主要参考: Spring Boot+OAuth2,一个注解搞定单点登录! - 江南一点雨 (javaboy.org) 本文记录踩坑与学习与实战记录(未更完) 目录 基础知识学习 cas和sso(了解): cas 通过..

aqing617的博客 7219

【安全记录】使用CAS实现SSO单点登录

文章目录1. 前言2. 相关知识介绍2.1 SSO概述2.2 CAS介绍3. CAS服务端安装部署4. CAS 服务端配置5. CAS 客户端编写配置5.1 客户端15.2 客户端26. 效果演示7. 总结8. 参考链接 1. 前言 平时渗透过程中总会遇到很多SSO单点登录的站群,也不太清楚其中的原理。最近看到一篇文章,讲解了使用CAS实现SSO功能, 2. 相关知识介绍 2.1 SSO概述 单点登录(Single Sign-On , 简称 SSO)是目前比较流行的服务于企业业务整合的解决方案之一, SSO

君行路的博客 632

springboot+shiro+cas5.2实现SSO单点登录(超详细)

一、下载cas的服务端cas-overlay-template,这里我用的是5.2版本,JDK用的1.8 二、进入到解压后的cas-overlay-template-master文件夹,使用maven命令打包,打包比较慢,建议maven仓库换成阿里云的提升速度 mvn clean package 三、打包完后会出现target文件夹,里面有cas.war文件 四 ...

Z丶royAl的博客 1万+

abaqus wcm插件下载_Abaqus随机短纤维增强复合材料建模插件

文末附Abaqus随机短纤维增强复合材料建模插件下载链接前言短纤维增强复合材料相对于长纤维增强复合材料来说更容易制备,且短纤维的填充性能略有改善,可制造复杂产品,广泛应用于车辆、航空航天、建筑等行业,对短纤维增强复合材料进行细观力学分析,可对其宏观力学性能进行预测、分析破坏机理等。接下来对随机短纤维增强复合材料建模插件进行介绍。NO.1 【算法简介】难点一:此插件核心在于判断生成的纤维是...

weixin_39974882的博客 2833

SpringBoot+CAS整合服务端和客户端实现SSO单点登录与登出快速入门上手

SpringBoot+CAS整合服务端和客户端实现SSO单点登录与登出快速入门上手

杨杨吖的博客 1万+

ArcGIS基础:城市交通网络构建及设施服务分析(一):道路数据处理与拓扑操作

首先需要加载数据, 1:选择这个数据库:,右键导入,选择导入单个要素,弹出“要素类至要素类” 2:输出位置(导入的数据是CAD格式数据)。 3:输出要素类为道路。 4:字段只保留道路类型字段。 这个操作是分类合并各级道路数据。 1:通过属性选择各类道路数据。 2:比如此类都是“干道”。 3:编辑器下来,然后合并即可。 得到如图所示,需要用到三个字段。 上面这个操作是打断道路相交线。 1:选中所有数据。 2:找到高级编辑中的打断相交线。 3:确定即可。 下面进行拓扑检查,虽然我们已经进行合并和打断相交.

yuanYW7556的博客 2万+

脑电数据预处理十四:主成分分析(PCA)用于伪迹去除与降维

本文探讨了主成分分析(PCA)在脑电图(EEG)预处理中的双重应用。针对EEG数据的高维特性和伪迹干扰问题,PCA既可有效去除高振幅伪迹(如眼动、心电等),又能实现数据降维。文章详细解析了PCA的核心原理,包括正交基向量投影和方差最大保留机制,并提供了基于MNE-Python的完整实现方案。通过代码示例展示了PCA在伪迹去除和降维中的具体应用效果,包括功率谱密度和时域波形的可视化对比。虽然ICA在复杂伪迹处理上更具优势,但PCA以其算法简单、计算高效的特点,成为EEG分析流程中不可或缺的基础工具。

qq_32516809的博客 1417

CAS单点登录(九)——客户端接入

在前面的CAS系列文章中,我们讲解了CAS从搭建到具体的自定义配置,但针对的都是CAS服务端的知识,今天我们讲解一下CAS的客户端知识点。

Anumbrella 1万+

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (三)

一、host文件 host文件配置DNS映射 127.0.0.1 sso.maple.com 二、Tomcat配置SSL 1、生成证书 keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass 123456 -validity 365 -keystore D:\beijing\develop\apache-tom...

蓝天之枫 8685

电子产品设计中EFT防护的关键技术与实践

本文深入探讨了电子产品设计中EFT(快速瞬变脉冲群)防护的关键技术与实践。文章从EFT干扰的原理入手,系统阐述了通过优化PCB布局与地平面设计、构建电源与信号端口滤波防护电路、精选核心器件以及实施软件容错策略,来构建多层次、系统性的抗干扰防线,助力产品稳定通过严苛的电磁兼容测试。

e4f5g6h的博客 786

VSCode+Typst零配置写作指南:5分钟搞定论文排版环境(含实时预览技巧)

本文介绍如何利用VSCode和Typst快速搭建零配置的论文排版环境,5分钟内实现高效写作与实时预览。Typst作为轻量级排版工具,结合LaTeX的精度与现代化语法,显著提升学术写作效率,特别适合需要频繁调整格式的研究人员。

weixin_30642561的博客 109

SpringBoot 集成cas5.3 实现sso单点登录

什么是单点登录? 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。 SSO单点登录访问流程主要有以下步骤: 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。 定向认证:SSO客户端会重定向用户请求到SSO服

Tongyao 4278

ATT MTU 交换机制:提升 BLE 数据传输效率的关键

在低功耗蓝牙(BLE)技术的面试中,ATT MTU 交换机制始终是高频考点。无论是芯片厂商的固件开发岗,还是物联网设备的协议栈调试岗,面试官都爱通过这个知识点考察候选人对 BLE 数据传输底层逻辑的理解。本文将系统梳理核心考点,结合历年真题详解应答思路,轻松应对这类问题。​

byte轻骑兵的技术小窝 2411

springboot-cas单点登录

/1、 maven项目转为eclipse项目 进入到项目中,通过eclipse插件转为eclipse可以识别的maven项目。 mvn eclipse:eclipse 2、 将maven项目转为idea工具能识别的项目 进入到项目中,通过idea插件转为idea可以识别的maven项目。 转换前: 转换后如下: 3、单点登录 单点登录(Single Sign On),简称为 SSO,是目前...

奋斗的小鸟专栏 1万+

基于单光子探测的高重频多通道符合测距

TDC专栏之基于单光子探测的高重频多通道符合测距

sdau2005的博客 1202

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于SpringbootShiro实现的CAS单点登录

单点登录(Single Sign On,SSO)是一种登录管理机制,主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。常见的例子就是,当我们在淘宝网上登录了之后,如果再访问天猫网的话是不需要再次登录的。

神尐破 4557

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录

CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录1.1 什么是单点登录1.2 什么是CAS1.3 CAS服务端部署1.template下载1.4 客户端搭建 1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 我们目前的系...

yyhdyp的博客 5205

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (四)

springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (一) springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (二) springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (三) 上篇文章我们使用cas-server和cas-client测试SSO单点登录的功能,...

蓝天之枫 7554

springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (六)

springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (一) springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (二) springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (三) springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 ...

蓝天之枫 4477

SSO单点登录:全面详解与实现指南

1、定义单点登录(Single Sign - On,简称 SSO)是一种身份验证机制,它允许用户使用单一的凭据(如用户名和密码)访问多个相互信任的应用系统。在这种模式下,用户只需登录一次,就可以在不同的应用之间无缝切换,而无需为每个应用单独进行登录操作。2、优势用户体验提升:用户无需记住多个账号和密码,减少了登录操作的繁琐性,提高了用户体验。管理效率提高:对于企业来说,管理用户账号和权限变得更加简单,只需要在单点登录系统中进行统一的用户管理和认证授权。安全性增强。

Yaml4的博客 5512

Spring Boot+Spring Security+CAS实现单点登录

目录第一章 CAS的概述1.1、SSO1.2、CAS第二章 CAS的流程2.1、CAS服务端2.2、CAS客户端2.3、CAS流程图第三章 CAS的部署3.1、源码下载3.2、源码打包3.3、部署运行第四章 CAS的定制4.1、定制数据源4.2、兼容 HTTP4.3、定制登录页第五章 CAS的集成5.1、工程创建5.2、导入依赖5.3、修改包名5.4、编写配置文件5.5、编写角色授权5.6、编写配置对象5.7、编写控制器类5.8、启动项目测试 配套资料,免费下载 链接:https://pan.baidu.

轻松的小希 4976
上一篇: Win10 如何把本地ip映射成域名
下一篇: SSO单点登录(三)SpringBoot+Shiro+CAS创建CAS客户端
呵呵菜鸟
博客等级 码龄10年 92粉丝 115原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值