当前位置: 首页 > news >正文

RuoYi前后端分离项目集成magic-api,并继承RuoYi的权限认证体系来管理magic-api

一、背景

由于magic-api的接口没有权限控制,所以风险系数较高,于是公司决定将magic-api整合集成到ruoyi框架中,成为若依的一部分,并完全继承若依的权限认证体系,即 用户必须登录若依之后,才可以访问magic-api管理界面,并进行接口开发

二、致命问题

RuoYi集成magic-api,其实很简单,网上也有很多的教程,但是要想让magic-api继承ruoyi的权限认证体系。就要解决一个重要且致命的问题:

即 magic-api必须得获取到RuoYi的token

那要怎么获取RuoYi用户登录的token呢?接下来进入正题

三、开始表演

1、引入依赖

ruoyi框架要想集成magic-api项目,首先需要引入maven依赖,本文以2.1.1版本为例

<dependency><groupId>org.ssssssss</groupId><artifactId>magic-api-spring-boot-starter</artifactId><version>2.1.1</version>
</dependency>

2、新增表

需要再Ruoyi的数据库中,增加两张magic-api相关的表:

  • magic_api_file
  • magic_api_backup

3、application.yml增加magic-api配置信息

主要的配置信息如下:

magic-api:web: /magic/workspaceresource:type: database  # 配置接口存储方式,这里选择存在数据库中table-name: magic_api_file  # 数据库中的表名prefix: /magic-api  # key前缀prefix: /srvhub # 接口前缀,可以不配置auto-import-module: db  #开启自定义模块auto-import-package: java.lang.*,java.util.* #自动导包editor-config: classpath:./magic-editor-config.js #编辑器配置debug:timeout: 60 # 断点超时时间,默认60spage:size: size # 页大小的参数名称page: page # 页码的参数名称thread-pool-executor-size: 8 # async语句的线程池大小throw-exception: false #执行出错时是否抛出异常response-code:success: 0 #执行成功的code值invalid: 1 #参数验证未通过的code值exception: -1 #执行出现异常的code值backup: #备份相关配置enable: truemax-history: 30
table-name: magic_api_backup

其中有一段这样的配置:

editor-config: classpath:./magic-editor-config.js

这个暂且不表,后面会解开真相。

4、在resource目录下增加magic-editor-config.js文件

上面提到了这个js文件,接下来我们展开说一下,首先,需要把这个文件添加到项目中,直接放到resource目录下:
在这里插入图片描述
这个magic-editor-config.js文件的具体内容如下:

var MAGIC_EDITOR_CONFIG = {getMagicTokenValue: function(){var cookies = document.cookie;const token = cookies.match(/Admin-Token=([^,;]+)/);console.log("^^^^^^^^^^^^ :" + token)if (token && token.length > 1) {return token[1];} else {return null; // 或者 throw new Error('Admin-Token not found');}}
}

该文件作用:就是为了获取ruoyi项目中的token,因为在magic-api中无法获取ruoyi用户登录的token。
再次强调一下,此文件会在application.yml文件中引用,如下:
magic-api:
editor-config: classpath:./magic-editor-config.js #编辑器配置

5、SecurityConfig文件配置

对请求路径/magic/web/**放行,交给magic-api处理,配置如下:
.antMatchers(“/magic/workspace/**”).anonymous()
在这里插入图片描述

6、开发magic-api登录认证拦截器类CustomAuthorizationInterceptor

直接在ruoyi后端项目中,增加拦截器类CustomAuthorizationInterceptor,当直接访问magic-api时,会判断用户是否登录,如果未登录,则直接打回。主要代码逻辑和若依的登录逻辑几乎一样的,具体代码如下:

package com.hidata.magicapi.interceptor;import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.

相关文章:

  • 在 Kubernetes 上部署 Python 微服务:高效架构与服务发现实践
  • 2025超全面Redis笔记!!!
  • 小提琴图绘制-Graph prism
  • 战略3.4 - 研究与开发战略、生产运营战略
  • 软件包管理系统的架构与生态机制
  • CSS Animation 详解
  • css设置动态数值:clamp函数
  • 基于Doc2Vec的Markdown文档分类实战:从预处理到模型评估
  • 计算机网络(4)——网络层
  • 【开源工具】跳过网页APP禁止粘贴限制:自动输入键盘模拟工具
  • 提升 GitHub Stats 的 6 个关键策略
  • 【开源解析】基于PyQt5+Folium的谷歌地图应用开发:从入门到实战
  • MySQL 使用全局锁会导致的问题?
  • 第三章 大模型的参数高效微调:对齐层实现
  • 【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源
  • Flink SQL 编程详解:从入门到实战难题与解决方案
  • 内联盒模型基本概念?——前端面试中的隐形考点剖析
  • js-day4
  • 第7章-航空公司客户价值分析
  • 机器学习-随机森林
  • 香港服务器的网站可以做经营么/百度网址是什么
  • 江门网站seo优化/国外b站不收费免费2023
  • 零代码网站开发工具/seo网站页面优化包含
  • wordpress前台浏览量插件/重庆seo网站推广费用
  • 为拟建设的网站申请一个域名/推广是什么意思
  • 四川省建设厅网站在线申报/营销网页