多举措加强局门户网站建设,做博客的网站,泰州市靖靖建设局网站,百姓网招聘最新招聘信息一、背景
在前后端分离开发的背景下#xff0c;后端java开发人员现在只需要编写接口接口。特别是使用微服务开发的接口。resful风格接口。那么一般后端接口被调用有下面三种场景。一、不需要用户登录的接口调用#xff0c;第二、后端管理系统接口调用#xff08;需要账号密…一、背景
在前后端分离开发的背景下后端java开发人员现在只需要编写接口接口。特别是使用微服务开发的接口。resful风格接口。那么一般后端接口被调用有下面三种场景。一、不需要用户登录的接口调用第二、后端管理系统接口调用需要账号密码登录第三、与第三方系统间的接口调用。所以如果同一个接口需要满足这三种场景就需要做鉴权要不然无法保障数据的安全。 二、定义三套接口方案
其实三套方法都可以通过token来进行鉴权
1.首先提供一个获取token的接口 /*** 获取远程调用凭证*/ApiOperation(value 获取远程调用凭证, notes 获取远程调用凭证)PostMapping(getRpcTonken)public ResponseDataString getRpcTonken (RequestBody MapString, 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) {QueryWrapperMTokenUser wrapper new QueryWrapperMTokenUser();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);ResponseDataBoolean res baseAdminCLient.verifyToken(token );if(res.getData()) {return true; } return false;}