java定义三套场景接口方案

news2024/9/17 8:30:59

一、背景

在前后端分离开发的背景下,后端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)) {
			//生成token
			return 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.coloradmin.cn/o/1326141.html

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

相关文章

【进阶篇】YOLOv8实现K折交叉验证——解决数据集样本稀少和类别不平衡的难题,让你的模型评估更加稳健

YOLOv8专栏导航&#xff1a;点击此处跳转 K折交叉验证 K折交叉验证&#xff08;K-Fold Cross-Validation&#xff09;是一种常用的机器学习模型评估方法&#xff0c;可以帮助我们评估模型的性能&#xff0c;特别适用于数据集相对较小的情况。 在K折交叉验证中&#xff0c;将原…

JMeter接口测试高阶——精通JMeter接口测试之BeanShell及调用java和python脚本

文章目录 一、BeanShell组件二、BeanShell自带的语法&#xff08;BeanShell常用变量和语法&#xff09;1.log打印2.vars用来操作JMeter的局部变量&#xff08;只能在一个线程组里面使用的变量&#xff09;3.props用来操作JMeter的全局变量&#xff08;能够跨线程组取值的变量&a…

2023 英特尔On技术创新大会直播 | 边云协同加速 AI 解决方案商业化落地

目录 前言边云协同时代背景边缘人工智能边缘挑战英特尔边云协同的创新成果最后 前言 最近观看了英特尔On技术创新大会直播&#xff0c;学到了挺多知识&#xff0c;其中对英特尔高级首席 AI 工程张宇博士讲解的边云协同加速 AI 解决方案商业化落地特别感兴趣。张宇博士讲解了英…

python实现一个图片查看器——可拖动、缩放和颜色画笔

目录 0 前言1 准备工作2 窗口布局3 图片显示功能3 图片拖拽功能4 图片缩放功能&#xff08;难度大&#xff09;5 画笔功能6 颜色选择功能后记源码 0 前言 在现如今的数字时代&#xff0c;我们对于图片的需求越来越大。无论是在工作中&#xff0c;还是在日常生活中&#xff0c;…

SLAM算法与工程实践——SLAM基本库的安装与使用(6):g2o优化库(1)g2o库的安装

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

PostGIS轨迹分析——横跨180°经线

问题描述 在处理AIS数据中&#xff0c;经常会遇到轨迹线横穿180经线的情况&#xff0c;这种数据绘制到地图上显示的非常乱&#xff0c;如下图所示&#xff1a; 数据模拟 在geojson.io上模拟一条轨迹线&#xff0c;可以看到轨迹显示的非常好&#xff0c;红框里面的经纬度超过…

使用Alpha Vantage API和Python进行金融数据分析

Alpha Vantage通过一套强大且开发者友好的数据API和电子表格&#xff0c;提供实时和历史的金融市场数据。从传统资产类别&#xff08;例如股票、ETF、共同基金&#xff09;到经济指标&#xff0c;从外汇汇率到大宗商品&#xff0c;从基本数据到技术指标&#xff0c;Alpha Vanta…

HashSet使用-力扣349做题总结

349. 两个数组的交集 分析代码HashSet出错的知识点1、HashSet新建2、HashSet添加add3、是否包含某元素4、集合->数组5、增强for循环 分析 没做出来的原因代码随想录的视频文字学习 为什么没做出来&#xff0c;因为没有理解好题意。根据示例1可知是去重的。且题目明确说“不考…

机器学习算法(12) — 集成技术(Boosting — Xgboost 分类)

一、说明 时间这是集成技术下的第 4 篇文章&#xff0c;如果您想了解有关集成技术的更多信息&#xff0c;您可以参考我的第 1 篇集成技术文章。 机器学习算法&#xff08;9&#xff09; - 集成技术&#xff08;装袋 - 随机森林分类器和...... 在这篇文章中&#xff0c;我将解释…

先进制造身份治理现状洞察:从手动运维迈向自动化身份治理时代

在新一轮科技革命和产业变革的推动下&#xff0c;制造业正面临绿色化、智能化、服务化和定制化发展趋势。为顺应新技术革命及工业发展模式变化趋势&#xff0c;传统工业化理论需要进行修正和创新。其中&#xff0c;对工业化水平的判断标准从以三次产业比重标准为主回归到工业技…

服务器数据恢复-昆腾存储StorNext文件系统下raid5数据恢复案例

服务器数据恢复环境&#xff1a; 昆腾某型号存储&#xff0c;StorNext文件存储系统。 共有9个分别配置了24块磁盘的磁盘柜&#xff0c;其中8个磁盘柜存放普通数据&#xff0c;1个磁盘柜存放元数据。 存放元数据的磁盘柜中的24块磁盘组建了8组RAID1阵列和1组4盘RAID10阵列&#…

Ubuntu 常用命令之 history 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 history命令在Ubuntu系统中用于显示用户执行过的命令列表。这个命令在bash shell中非常有用&#xff0c;特别是当你需要记住你之前执行过的命令时。 history命令的参数如下 -c&#xff1a;清除历史记录。-d offset&#xff1a;删…

全功能知识付费小程序系统源码是什么?有什么好处?

全功能知识付费小程序系统源码&#xff0c;是一个集课程管理、用户管理、支付管理、数据分析等于一体的综合性解决方案。它支持多种形式的课程内容&#xff0c;如视频、音频、图文等&#xff0c;满足不同用户的学习需求。同时&#xff0c;系统具备完善的支付功能&#xff0c;保…

怎么开通独立站支付?独立站客户退款谁支付运费?——站斧浏览器

怎么开通独立站支付&#xff1f; 选择支付服务提供商&#xff1a;开通独立站支付首先需要选择一个可靠的支付服务提供商。目前市场上有许多知名的支付服务提供商&#xff0c;如支付宝、微信支付、PayPal等。根据自己的业务需求和目标市场选择合适的支付服务提供商。 注册账号…

目前电视盒子哪个最好?工程师盘点超值电视盒子推荐

因工作原因每天都会跟各种各样类型的电视盒子打交道&#xff0c;拆机、维修&#xff0c;身边朋友在挑选电视盒子的时候会问我目前电视盒子哪个最好&#xff0c;哪些电视盒子最值得入手&#xff0c;我整理了五款超值电视盒子推荐给大家&#xff0c;在挑选电视盒子时可以把这几款…

两套高质量可视化模板套件,需要进!

小编整理了两套高质量可视化模板套件&#xff0c;均来自于山海鲸可视化&#xff0c;需要源文件可私。 一、「星曜蓝」主题可视化模板 可以自由调用模板库中的所有内容&#xff0c;轻松搭建风格统一的地图、工厂、城市多种数字孪生项目。真免费、0代码数字孪生设计搭建&#xf…

可狱可囚的爬虫系列课程 07:BeautifulSoup4(bs4)库的使用

前面一直在讲 Requests 模块如何使用&#xff0c;那都是在请求阶段要做的事情&#xff0c;相信很多网友都在等一个能够开始爬网站信息的教程&#xff0c;今天它来了&#xff0c;今天我要给大家讲一个很简单易懂的库&#xff1a;BeautifulSoup4。 一、概述&安装 Beautiful…

BWS2000倾角传感器c++测试代码【2】

问题一&#xff1a;串口频率的初始化 由于本次项目之中使用的线长为40米的倾角传感器&#xff0c;需要对于其频率输出存在要求&#xff0c;如何测试其频率如下所示&#xff1a; 如上所示相应的软件&#xff0c;软件中存在一句如果设置后不保存&#xff0c;则存在传感器断电后设…

众和策略:大盘涨手中的股票却大跌,到底怎么回事?

大盘涨手中的股票却大跌&#xff0c;究竟怎么回事&#xff1a; 1、大盘上涨是权重股所造成的 大盘上涨可能是受一些权重比较大的工作所影响&#xff0c;比如证券工作、钢铁工作、银行工作等等&#xff0c;这些工作的大涨&#xff0c;可以拉升大盘的上涨&#xff0c;可是其它工…

C++20形式的utf-8字符串转宽字符串,不依赖编译器编码形式

默认的char[]编码都是要看编译器编译选项的&#xff0c;你选了ANSI那它就是ANSI&#xff0c;你选了UTF8那它就是UTF8. 【注意&#xff1a;经典DevC只支持ANSI编码&#xff08;痛苦&#xff09;&#xff1b;上图是小熊猫DevC&#xff0c;则有这个选项】 这一点对我的代码造成了…