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

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.lryc.cn/news/266187.html

相关文章:

  • idea连接数据库,idea连接MySQL,数据库驱动下载与安装
  • Redis-实践知识
  • 多维时序 | MATLAB实现SSA-CNN-SVM麻雀算法优化卷积神经网络-支持向量机多变量时间序列预测
  • leetcode160相交链表思路解析
  • 在线分析工具-日志优化
  • 硬核实战!mysql 错误操作整个表全部数据后如何恢复?附解决过程、思路(百万行SQL,通过binlog日志恢复)
  • 【什么是反射机制?为什么反射慢?】
  • PostGreSQL:货币类型
  • ESP8266网络相框采用TFT_eSPI库TJpg_Decoder库mixly库UDP库实现图片传送
  • Go 泛型发展史与基本介绍
  • python 解决手机拍的书籍图片发灰的问题
  • 【prompt一】Domain Adaptation via Prompt Learning
  • 视频编辑与制作,添加视频封面的软件
  • Deepin更换仿Mac主题
  • 【Flink-Kafka-To-ClickHouse】使用 Flink 实现 Kafka 数据写入 ClickHouse
  • 浅谈Redis分布式锁(下)
  • Django Rest Framework框架的安装
  • 深度学习(七):bert理解之输入形式
  • 如何用Excel制作一张能在网上浏览的动态数据报表
  • 双向数据绑定是什么
  • 鱼眼标定方式
  • 详解Keras3.0 KerasNLP Models: GPT2 GPT2Tokenizer
  • 2016年第五届数学建模国际赛小美赛B题直达地铁线路解题全过程文档及程序
  • 三秦通ETC续航改造
  • 使用Python实现发送Email电子邮件【第19篇—python发邮件】
  • Docker基本命令和Docker怎么自己制作镜像
  • Netty-2-数据编解码
  • 伽马校正:FPGA
  • 【SpringCloud笔记】(8)服务网关之GateWay
  • Compose常用布局