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

多语言网站建设应注意哪些事项济南个人急售二手房

多语言网站建设应注意哪些事项,济南个人急售二手房,本网站正在建设升级中,网站建设维护员前言#xff1a;使用dubbo做为通信组件#xff0c;如果接口需要鉴权#xff0c;和日志记录需要怎样处理#xff1b; 1 鉴权#xff1a; 1.1 在bootstrap.yml 中定义过滤器#xff1a; dubbo.provider.filter: 过滤器的名字#xff1a; 1.2 resources 目录下创建配置文…前言使用dubbo做为通信组件如果接口需要鉴权和日志记录需要怎样处理 1 鉴权 1.1 在bootstrap.yml 中定义过滤器 dubbo.provider.filter: 过滤器的名字 1.2 resources 目录下创建配置文件 1 resources 创建目录/META-INF/dubbo 2 创建文件名字为org.apache.dubbo.rpc.Filter 的纯文本文件 3 定义过滤器 过滤器名字过滤器路径地址 4服务提供端DubboTokenFilter package org.lgx.bluegrass.bluegrasses.dubbofilter;import org.apache.dubbo.rpc.*; import org.apache.dubbo.rpc.filter.TokenFilter; import org.lgx.bluegrass.api.common.dto.ResponseDTO; import org.lgx.bluegrass.bluegrasses.util.ApplicationContextUtils; import org.lgx.bluegrass.bluegrasses.util.RedisUtil; import org.springframework.util.StringUtils;/*** Description TODO* Date 2023/3/7 15:38* Author lgx* Version 1.0*/ public class DubboTokenFilter extends TokenFilter {private RedisUtil redisUtil;Overridepublic Result invoke(Invoker? invoker, Invocation invocation) throws RpcException {String isNeedToken invoker.getUrl().getParameter(Constants.TOKEN_KEY);// 是否需要进行token 验证if (StringUtils.hasText(isNeedToken)) {// 获取消费端传入的tokenString clientToken1 invocation.getAttachment(dubbo_accesstoken);// 获取服务端的tokenString serverToken getServerToken();// token验证并且统一封装返回结果if (!serverToken.equals(clientToken1)) {// token 异常则直接封装ResponseDTO 并返回return AsyncRpcResult.newDefaultAsyncResult(ResponseDTO.defaultResponse(token illegal), invocation);// 也可以抛出异常// Class? serviceType invoker.getInterface();// throw new RpcException(Invalid token! Forbid invoke remote service serviceType method invocation.getMethodName() () from consumer RpcContext.getContext().getRemoteHost() to provider RpcContext.getContext().getLocalHost());}}return invoker.invoke(invocation);}// 从redis 中获取token 业务自行实现private String getServerToken() {if (null redisUtil) {redisUtil (RedisUtil) ApplicationContextUtils.getBean(redisUtil);}String accessToken redisUtil.get(dubbo_accesstoken);return 1234;} } ResponseDTO 封装类 // loomback 插件 Data Accessors(chain true) public class ResponseDTOT implements Serializable {private static final long serialVersionUID 3918877423924837166L;private int code 200;private T body;private String msg;private boolean redirect true;private ListResponseMessage messages;private ListString message new ArrayList();private int errNum;private String errorMsg;private Object errorObject;private boolean success true;public static T ResponseDTO defaultResponse(T t) {return new ResponseDTO().setCode(BizHttpStatus.HTTP_STATUS_200.getStatus()).setBody(t);} }RedisUtil 封装类stringRedisTemplate bean 自行配置实现 Component public class RedisUtil {AutowiredQualifier(stringRedisTemplate)private StringRedisTemplate redisTemplate;public void setRedisTemplate(StringRedisTemplate redisTemplate) {this.redisTemplate redisTemplate;}public StringRedisTemplate getRedisTemplate() {return this.redisTemplate;}/*** 获取指定 key 的值** param key* return*/public String get(String key) {return redisTemplate.opsForValue().get(key);}/*** 设置指定 key 的值** param key* param value*/public void set(String key, String value) {redisTemplate.opsForValue().set(key, value);} }服务业务类提供者 DubboTestServiceImpl import org.apache.dubbo.config.annotation.DubboService; import org.lgx.bluegrass.api.common.dto.ResponseDTO; import org.lgx.bluegrass.api.service.DubboTestService;/*** Description TODO* Date 2023/2/23 15:50* Author lgx* Version 1.0*/ // dubbo 服务暴露标识token 1234 定义token验证标识 DubboService(token 1234) public class DubboTestServiceImpl implements DubboTestService {Overridepublic ResponseDTO test(String token) {return ResponseDTO.defaultResponse(hello es token);} } 服务定义DubboThreeService public interface DubboThreeService {ResponseDTO testOne(String token); } 5 消费端同服务提供端12,3,相同 定义好过滤器 定义消费端token 填充 DubboTokenFilter public class DubboTokenFilter implements Filter {private RedisUtil redisUtil;Overridepublic Result invoke(Invoker? invoker, Invocation inv) throws RpcException {if (null redisUtil) {Object obj ApplicationContextUtils.getBean(redisUtil);if (null ! obj){redisUtil (RedisUtil) obj;}}String isNeedToken invoker.getUrl().getParameter(Constants.TOKEN_KEY);// 是否需要进行token 验证if (StringUtils.hasText(isNeedToken)) {// Constants.TOKEN_KEY, 1234 便于跳过duboo 内置的token 验证// 1234 对应服务提供端业务实现类中定义的token DubboService(token 1234)inv.setAttachment(Constants.TOKEN_KEY, 1234);// 设置本次真正需要验证的tokeninv.setAttachment(dubbo_accesstoken, 1234qazwsxedc);}// 远程接口调用return invoker.invoke(inv);} }6 消费端测试 RestController public class DubboRpcController {DubboReferenceprivate DubboTestService dubboTestService;RequestMapping(value /dubbo-test, method RequestMethod.GET)public String index(RequestParam(token) String token) {return dubboTestService.test(token).toString();} }2 日志记录 DubboAccessLogFilter import org.apache.dubbo.common.logger.Logger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.ConfigUtils; import org.apache.dubbo.rpc.*; import org.apache.dubbo.rpc.support.AccessLogData;import java.util.Date;/*** Description TODO* Date 2023/3/8 16:48* Author lgx* Version 1.0*/ public class DubboAccessLogFilter implements Filter {private static final Logger logger LoggerFactory.getLogger(DubboAccessLogFilter.class);Overridepublic Result invoke(Invoker? invoker, Invocation inv) throws RpcException {try {// 是否需要对改接口进行日志记录String accessLogKey invoker.getUrl().getParameter(accesslog);if (ConfigUtils.isNotEmpty(accessLogKey)) {// 请求的数据AccessLogData logData this.buildAccessLogData(invoker, inv);// save logsaveLog(logData);}} catch (Throwable var5) {logger.warn(Exception in AccessLogFilter of service( invoker - inv ), var5);}return invoker.invoke(inv);}// 自行实现数据的保存private void saveLog(AccessLogData logData) {}private AccessLogData buildAccessLogData(Invoker? invoker, Invocation inv) {AccessLogData logData AccessLogData.newLogData();logData.setServiceName(invoker.getInterface().getName());logData.setMethodName(inv.getMethodName());logData.setVersion(invoker.getUrl().getParameter(version));logData.setGroup(invoker.getUrl().getParameter(group));logData.setInvocationTime(new Date());logData.setTypes(inv.getParameterTypes());logData.setArguments(inv.getArguments());return logData;} } 服务业务提供端 // accesslog 日志记录标识 DubboService(accesslog 123) public class DubboTestServiceTwoImpl implements DubboTestTwoService {Overridepublic ResponseDTO sayHello() {MapString,Object result new HashMap(12);result.put(data,Hello !);result.put(success,true);result.put(code,200);return ResponseDTO.defaultResponse(result);} }3 数据统一封装 AppendedFilter: import org.apache.dubbo.rpc.*; import org.lgx.bluegrass.api.common.dto.ResponseDTO;/*** Description TODO* Date 2023/3/7 11:00* Author lgx* Version 1.0*/ public class AppendedFilter implements Filter {Overridepublic Result invoke(Invoker? invoker, Invocation invocation) throws RpcException {Result result invoker.invoke(invocation);Result appResponse ((AsyncRpcResult) result).getAppResponse();Object data appResponse.getValue();if (data instanceof ResponseDTO) {return result;}// 统一进行ResponseDTO 格式数据封装返回appResponse.setValue(ResponseDTO.defaultResponse(data));return result;} } 参考 1 调用拦截扩展
http://www.tj-hxxt.cn/news/137232.html

相关文章:

  • 正规的镇江网站建设怎样在我的世界做汽车视频网站
  • 网站开发需要哪些职位做网站大约多少钱
  • 免费门户网站系统wordpress 文章编辑 插件
  • 网站程序开发外包平面设计公司广告语
  • 表白网站制作模板巴南市政建设网站
  • 广东 网站建设汽车租赁网站建设内容
  • 男男床做第一次视频网站wordpress文章循环不带置顶文章
  • 微信订阅号 网站开发网店模板
  • 北京大型网站优化wordpress 女性模板
  • 网站开发维护成本wordpress 文章版权
  • 游戏网站首页模板最快做网站的语言
  • 郑州企业免费建站wordpress3.6
  • 网站不显示内容佛山网站建设专业定制
  • 我自己做的一个网站显示证书错误郑州新闻
  • 住房和城乡建设部网站诚信评价win7一键优化工具
  • 未备案网站处理系统做邀请函用哪个网站好呢
  • 郑州专业网站制作的公司哪家好wordpress eaccelerator
  • 360网站收录提交入口大全个人网页设计模板html代码
  • 茂名网站建设服务网络营销存在的问题及解决对策
  • 南昌网站免费制作设计网页的工作叫什么
  • 网站建设需要什么软件专业建设情况
  • 乐清品牌网站建设一个主机可以做几个网站域名
  • 电商商城网站建设做现货值得关注的财经网站
  • asp.net网站访问统计wordpress 写入权限设置
  • 网站开发服务单位网络营销模式有几种
  • 网站个性化制作电商网站联盟平台
  • 陆川建设局网站装修素材网站有哪些
  • 用织梦做的网站一般后台找做网站
  • 类似卡盟网站卖怎么做网站建设基础入门
  • qq空间域名抢注网站山东建设管理局官方网站