ruoyi-cloud-plus添加一个不要认证的公开新页面

ops/2024/11/20 10:37:28/

文章目录

    • 一、前端
      • 1. 组件创建
      • 2. src/router/index.ts
      • 3. src/permission.ts
    • 二、后端

版本
RuoYiCloudPlusv2.1.2
plus-uiVue3 ts

以新增一个公开的课程搜索页面为例。

一、前端

1. 组件创建

在view目录下创建一个页面的vue代码,比如

src/views/customer/searchPage/index.vue

2. src/router/index.ts

为其编制一个路由。在constantRoutes中添加一组dict信息。比如

{path: '/courseSearch',component: () => import('@/views/customer/searchPage/index.vue'),hidden: true
},

3. src/permission.ts

把页面加入前端的whiteList

const whiteList = ['/login','/register','/social-callback','/courseSearch'
];

在浏览器输入http://localhost/courseSearch,至此这个页面已经不用登录就可以访问了。

二、后端

但是后端是有网关和认证模块的,虽然前端页面可以不用登陆了,但是如果这个页面还需要从后端获取数据,那么后端对应的controller也应该被open。

1. 设计思想

不同模块有不同的url前缀,比如

routes:# 认证中心- id: ruoyi-authuri: lb://ruoyi-authpredicates:- Path=/auth/**filters:- StripPrefix=1# 代码生成- id: ruoyi-genuri: lb://ruoyi-genpredicates:- Path=/tool/**filters:- StripPrefix=1

并且每个模块都有可能需要open一些controller,不需要认证。那么我们进行统一设定,比如课程模块,url前缀为course,那么/course/open/**就都是被公开的端点。于是在gateway只需要把/*/open/**加入白名单即可。

ruoyigatewayyml_67">2. ruoyi-gateway.yml

在nacos中修改gateway的配置文件,把/*/open/**加入whites。

security:ignore:whites:- /auth/code- /auth/logout- /auth/login- /auth/binding/*- /auth/social/callback- /auth/register- /auth/tenant/list- /resource/sms/code- /*/v3/api-docs- /*/error- /csrf- /*/open/**

3. 开发Controller

在course模块中,新建一个CourseOpenController.java,内容示例如下

package org.dromara.course.controller;import org.dromara.course.domain.bo.CourseCategoryBo;
import org.dromara.course.domain.vo.CourseCategoryVo;
import org.dromara.course.service.CourseCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/open")
public class CourseOpenController {@AutowiredCourseCategoryService categoryService;@GetMapping("/category/list")public List<CourseCategoryVo> list(CourseCategoryBo bo) {return categoryService.queryList(bo);}}

重启网关和课程模块即可。

在这里插入图片描述


http://www.ppmy.cn/ops/17212.html

相关文章

Kotlin语法快速入门--条件控制和循环语句(2)

Kotlin语法入门–条件控制和循环语句&#xff08;2&#xff09; 文章目录 Kotlin语法入门--条件控制和循环语句&#xff08;2&#xff09;二、条件控制和循环语句1、if...else2、when2.1、常规用法2.2、特殊用法--并列&#xff1a;2.3、特殊用法--类型判断&#xff1a;2.4、特殊…

virtio-wayland

CrosVM是Chrome操作系统中&#xff0c;用于创建虚拟机的应用。是一个Rust编写的轻量级的虚拟机。借助于CrosVM 用户可以很容易的在ChromeOS中运行Linux、Android以及Windows应用程序 概述 目前crosvm实现了virtio wayland协议&#xff0c;实现了对linux虚拟机wayland协议支持 …

idea上传项目到gitee(码云)

1、打开码云&#xff0c;新建仓库 2、创建 3、这就是创建成功的页面 4、复制仓库地址&#xff0c;后面需要用到 2、打开我们的项目&#xff1a;例如我现在的项目 1、idea创建git仓库 2、选择我们项目文件夹的目录 3、查看文件是否变色&#xff0c;变色表示成功了 4、添加到缓…

typescript中声明新的对象类型

在 TypeScript 中声明新的对象类型主要有两种方式&#xff1a;使用 interface 和 type 关键字。这两种方法在很多情况下都可以互换使用&#xff0c;但它们也有一些不同的特性和用法。下面将介绍如何使用这两种方法来声明新的对象类型。 使用 interface 声明对象类型 interfac…

数字化革新:可视化墨水屏引领基板工艺MSAP贴膜阶段迈向无纸化高端制造应用背景

随着科技的飞速发展和环境保护意识的日益增强&#xff0c;制造印刷电路板&#xff08;PCB&#xff09;行业正面临着提升生产效率、降低资源消耗和推动绿色制造的迫切需求。 问题&#xff1a; PCB生产过程对洁净度要求高&#xff0c;传统打印的纸张会有粉尘&#xff0c;纸屑&am…

Java中使用Graphics2D实现字符串- 竖直并居中排序显示算法

效果&#xff1a; 代码&#xff1a; public static void drawMyString(Graphics textGraphics, String text) {// 每列显示的汉字数量int columnSize 7;// 文字之间的垂直间距int verticalSpacing 75;// 获取字体渲染上下文FontMetrics fm textGraphics.getFontMetrics();//…

4- JavaScript对象

JavaScript对象 一、数组 数组(Array)是指一组数据的集合&#xff0c;其中的每个数据被称作元素&#xff0c;数组是属于内置对象&#xff0c;数组和普通对象的功能类似&#xff0c;都可以用来存储一些值。不同的是&#xff1a; 普通对象是使用字符串作为属性名&#xff0c;而…

SQL UNION

在SQL中&#xff0c;UNION 是一个用于合并两个或多个 SELECT 语句结果集的操作符。使用 UNION 时&#xff0c;结果集会去重&#xff0c;只包含唯一的行。如果保留重复的行&#xff0c;可以使用 UNION ALL。 以下是 UNION 的一些关键点&#xff1a; 1. 去重&#xff1a;UNION 默…