IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot前后端分离项目集成cas问题 -> 正文阅读

[Java知识库]springboot前后端分离项目集成cas问题

前言

阅读本篇文章需先了解集成CAS基本流程,这里只是记录集成过程中碰到的问题!

以下是本篇文章正文内容,下面案例可供参考

此次笔者在项目中碰到前后端分离环境下集成CAS所遇到的问题,网上很多关于如何集成CAS的配置,这里不在过多赘述。

1.跨域问题

问题描述

CAS拦截前端请求地址跳转到CAS服务端登录页面后会出现跨域问题,根据网上找的跨域解决办法都无效。

解决办法

这里是写一个接口,接口里返回CAS服务端的请求地址,由前端进行跳转才解决的。

@GetMapping("/getCasUrl")
   public RestData getCasUrl(HttpServletRequest request) {
   		// 判断是否需要进行CAS认证
       if (StringUtils.isNotBlank(loginType)) {
           return addRestData("http://localhost:9090/cas/login?service=此处填CAS客户端配置的拦截地址");
       } else {
           return addRestData();
       }
   }

2.验证登录问题

问题描述

登录成功后怎么返回项目首页

解决办法

CAS服务端登录成功后会发送请求service参数携带的路径上并带上生成的ST,请求此接口进行验证身份,那么可以加个接口用于CAS校验,校验成功后再由后台重定向到前台页面即可。

@GetMapping("/redirectHome")
public void redirectHome(HttpServletResponse response) throws IOException {
	// 这里是用于CAS客户端校验登录情况,没有什么逻辑处理,此处也可以先判断是否校验成功,再决定加不加标识
   	response.sendRedirect("项目首页地址?flag=" + true);
}

3.登录成功获取认证信息

问题描述

此时已经CAS认证成功了,那么前端该怎么拿到用户信息呢。

解决办法

如上图,重定向页面的时候可以返回一个标记给告知前端,前端在页面加载的时候判断是否有这个标记,有的话则请求接口拿到用户信息。

@GetMapping("/loginByCas")
public RestData loginByCas(HttpServletRequest request) {
   // 1.调用cas客户端方法,获取当前cas已经登陆的用户名
   Object object = request.getSession().getAttribute("_const_cas_assertion_");
   if (null == object) {
       return null;
   }
   Assertion assertion = (Assertion) object;
   String userName = assertion.getPrincipal().getName();
   // 2.根据用户名查询用户信息,能查出来代表登录成功
   // 3.生成token
   // 4.返回用户信息和token
}

总结

以上就是笔者在前后端分离环境下集成CAS的流程,如有其他办法欢迎留言。
下面两篇集成CAS文章可供参考:
CAS服务端和客户端搭建
springboot通过配置文件集成CAS配置

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:08:35  更:2022-02-24 15:11:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:49:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码