java定义三套场景接口方案

一、背景

在前后端分离开发的背景下,后端java开发人员现在只需要编写接口接口。特别是使用微服务开发的接口。resful风格接口。那么一般后端接口被调用有下面三种场景。一、不需要用户登录的接口调用,第二、后端管理系统接口调用(需要账号密码登录),第三、与第三方系统间的接口调用。所以如果同一个接口需要满足这三种场景,就需要做鉴权,要不然无法保障数据的安全。

二、定义三套接口方案

其实三套方法都可以通过token来进行鉴权

1.首先提供一个获取token的接口

	/*** 获取远程调用凭证*/@ApiOperation(value = "获取远程调用凭证", notes = "获取远程调用凭证")@PostMapping("getRpcTonken")public ResponseData<String> getRpcTonken (@RequestBody Map<String, Object> param) {String userName = "";String password = "";if(param.containsKey("userName")) {userName = param.get("userName").toString();}if(param.containsKey("password")) {password = param.get("password").toString();}MTokenUser mTokenUserRes = mTokenUserService.searchByUserName(userName,password);if (ObjectUtil.isNotEmpty(mTokenUserRes)) {//生成tokenreturn ResponseData.success(redisUtils.generateToken(mTokenUserRes));}else {log.error(MTokenUserConstant.QUERY_FAILED);return ResponseData.error(MTokenUserConstant.QUERY_FAILED);}}

 通过给定的账号和密码进行制作token,当然这里的账号和密码应该进行加密传输,获取的时候进行解密

    /*** 根据账号和密码查询* searchByUserName*/public MTokenUser searchByUserName(String userName,String  password) {QueryWrapper<MTokenUser> wrapper = new QueryWrapper<MTokenUser>();wrapper.eq("user_name", userName);wrapper.eq("password", password);MTokenUser mTokenUser = mTokenUserMapper.selectOne(wrapper);return mTokenUser;}

 

获取与验证token的合法性

    public   String generateToken(Object user){//生成唯一不重复的字符串String token = UUID.randomUUID().toString();set(RedisKeys.getRpcToken(token), user, 7200);return token;}/*** 验证token是否合法* @param token* @return*/public   boolean verify(String token){String s =  get(RedisKeys.getRpcToken(token));if(!StringUtils.isEmpty(s)) {return	true;}else {return	false;}}

 

三、在过滤器中对接口进行鉴权

    public boolean memberAppAuth(ServerHttpRequest request, ServerHttpResponse response) {// 获取token 小程序登录态认String token = request.getHeaders().getFirst(Constant.resToken);ResponseData<Boolean> res = baseAdminCLient.verifyToken(token );if(res.getData()) {return true;	} return false;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

loki-日志

一、loki Github ELK虽然功能丰富&#xff0c;但规模复杂&#xff0c;资源占用高&#xff0c;操作苦难&#xff0c;很多功能往往用不上&#xff0c;loki 受 prometheus 启发的水平可扩展、高可用、多租户日志聚合系统&#xff0c;它的设计非常经济高效且易于操作&#xff0c;…

使用【OpenI启智平台】进行模型训练

前言 启智平台OpenI是一个人工智能开源开放平台&#xff0c;提供免费GPU算力可以进行模型训练。模式是git进行项目管理&#xff0c;可以创建调试任务调试代码以及保存镜像&#xff0c;创建训练任务训练模型&#xff0c;也提供推理和评测&#xff0c;我没用过就不讲述了。后来我…

Sketch软件免费中文版在线使用教程及下载安装指南

什么是Sketch&#xff1f; Sketch是一款专为设计量身定制的矢量绘图软件&#xff0c;广泛应用于UI/UX设计和原型制作。 Sketch由荷兰Bohemiancoding公司开发&#xff0c;并于2010年首次发布。当时&#xff0c;AdobePhotoshop、AdobeIlustrator等主流设计工具虽然功能强大&…

MySQL-1

1 数据库基础概念 Data数据 对客观事物的符号表示&#xff0c;如图形符号、数字、字母等&#xff0c;数据是数据库中存储的基本对象。2. DB数据库数据库(Database,简称DB)的定义&#xff1a;“按照数据结构来组织、存储和管理数据的仓库” 3. DBMS数据库管理系统概念&#xff…

Qt WebAssembly开发环境配置

目录 前言1、下载Emscripten SDK2、 安装3、环境变量配置4、QtCreator配置5、运行示例程序总结 前言 本文主要介绍 Qt WebAssembly 开发环境的配置。Qt for Webassembly 可以使Qt应用程序在Web上运行。WebAssembly&#xff08;简称Wasm&#xff09;是一种能够在虚拟机中执行的…

FFmpeg 简单文档

一、播放器框架 常用音视频术语 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a;即特定格式的多媒体文件&#xff0c;比如mp4、flv、mkv等。媒体流&#xff08;Stream&#xff09;&#xff1a;表示时间轴上的一段连续数据&#xff0c;如一段声音数据、…

【圣诞】极安云科赠书活动第①期:CTF实战:从入门到提升

【圣诞】极安云科赠书活动第①期&#xff1a;CTF实战:从入门到提升 9787111724834 9787121376955 9787302556275 ISBN编号&#xff1a;9787111724834 书名&#xff1a;CTF实战:从入门到提升 定&#xff1a;99.00元 开本&#xff1a;184&#xff4d;&#xff4d;260&#xff…

Stable-diffusion-webui本地部署和简要介绍

Stable Diffusion 是一款基于人工智能技术开发的绘画软件&#xff0c;它可以帮助艺术家和设计师快速创建高品质的数字艺术作品。是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像&#xff0c;同时也可以应用于其他任务&#xff0c;如内补绘制、…

提示“由于找不到mfc140u.dll,无法继续执行代码”如何解决?

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是找不到某个动态链接库文件&#xff0c;比如mfc140u.dll。这个问题可能会导致某些应用程序无法正常运行或打开。 一、关于找不到mfc140u.dll文件造成会的问题 mfc140u.dll是Visual C中的一个…

【Amazon 实验①】Amazon WAF功能增强之实验环境准备

文章目录 1. 实验介绍2. 实验环境准备 1. 实验介绍 在真实的网络空间中&#xff0c;攻击者会使用大量广泛分布的僵尸网络、肉机等发起对目标的攻击。 其来源分布一般比较分散&#xff0c;因此难以简单防范。 本实验联合使用有多种AWS服务&#xff1a;Cloudfront、 Lambdaedge…

VPN理论入门及GRE、L2TP、IPsec(HCIP)

一、VPN概述 IPsec-VPN&#xff1a; 1、应用范围&#xff1a;用于分公司和总部之间。 2、作用&#xff1a;机密性、证书&#xff08;身份认证&#xff09; VPN概述 VPN概述&#xff1a;VPN&#xff08;Virtual Private Network&#xff09;是指依靠Internet服务提供商ISP&a…

一文读懂Java中的设计模式——代理模式,以翻译场景举例,特别通俗易懂!

代理模式概念 在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。目的&#xff1a;为其他对象提供一种代…

01-基于粤嵌GEC6818实现屏幕的显示固定颜色进行自动切换

基于GEC6818实现屏幕颜色的切换 本文使用开发板GEC6818&#xff0c;实现屏幕显示特定颜色并且进行自动切换的功能。 文章目录 基于GEC6818实现屏幕颜色的切换一、 初始化开发板--&#xff08;开发板是新的则可以省略很多步骤&#xff09;1.1 **删除文件和文件夹**1.2 **查看磁盘…

【送书福利-第三十一期】《区块链安全理论与实践(安全技术经典译丛)》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

手把手教你基于 FastGPT 搭建个人知识库

前言 大家好&#xff0c;我是潇潇雨声。我发现在使用 GPT 时&#xff0c;尽管它能够生成一些小红书文案和日志&#xff0c;但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法&#xff0c;那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…

Python---搭建Python自带静态Web服务器

1. 静态Web服务器是什么&#xff1f; 可以为发出请求的浏览器提供静态文档的程序。 平时我们浏览百度新闻数据的时候&#xff0c;每天的新闻数据都会发生变化&#xff0c;那访问的这个页面就是动态的&#xff0c;而我们开发的是静态的&#xff0c;页面的数据不会发生变化。 …

Floyd求最短路(Floyd算法)

参考&#xff1a;约会怎么走到目的地最近呢&#xff1f;一文讲清所有最短路算法问题-CSDN博客 有4个城市8条路&#xff0c;公路上的数字表示这条公路的长短&#xff0c;并且路是单向的&#xff0c;现在要求我们求出任意两个城市之间的最短路程&#xff0c;也就是求任意两个点之…

蓝桥杯2019年10月青少组Python程序设计省赛真题

1:有n个人围成一个圈,按顺序排好号然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号输人描迹:输人一个正整数n 输出描迹:输出最后留下的是原来的第几号 [样例输人] [样例输出] 2: 3、 […

ACM32G1x3有那些优势?适用于那些产品上?

ACM32G1x3优势 • 320KB 程序Flash64KB SRAM&#xff0c;跑RTOS程序开发更加方便 • 从外挂Flash通过DMA搬运图片数据到PSRAM&#xff0c;无需打断程序运行 • 120MHz M33内核&#xff0c;处理性能佳 • 集成2路CAN接口&#xff0c;适合工控等需要CAN接口的场景 • QS…

[JS设计模式]Flyweight Pattern

Flyweight pattern 享元模式是一种结构化的设计模式&#xff0c;主要用于产生大量类似对象而内存又有限的场景。享元模式能节省内存。 假设一个国际化特大城市SZ&#xff1b;它有5个区&#xff0c;分别为nanshan、futian、luohu、baoan、longgang&#xff1b;每个区都有多个图…