第四篇,新手注册Consul 服务带token
时间:2019-12-06
本文章向大家介绍第四篇,新手注册Consul 服务带token,主要包括第四篇,新手注册Consul 服务带token使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
通过前三篇文章,成功启动了consul,注册了服务,那么问题来了,谁都可以注册还怎么玩,必须要有一个安全的机制。
简单的玩法就是acl加一个toekn,那怎么加了?
第一步: 启动配置命令
-config-dir :配置文件的文件夹,将读取里面所有的*.json 格式数据,文件名必须是.json结尾哦。
consul agent -bootstrap-expect 1 -server -data-dir D:\HNHPC\微服务框架\consul_1.5.3_windows_amd64\consul -node=192.168.1.161 -bind=192.168.1.161 -enable-script-checks=true -datacenter=hnhpc -client=0.0.0.0 -ui -config-dir D:\HNHPC\微服务框架\consul_1.5.3_windows_amd64\config
第二步:在ConsulManager类中,填写 master的 值【245d0a09-7139-bbea-aadc-ff170a0562b1】
第三步:启动core系统就通过toekn注册了,没有token的就限制了注册。
using Consul; using System; using System.Collections.Generic; using System.Text; namespace Core.Consul { internal class ConsulManager { private static ConsulClient client = null; static ConsulManager() { if (client == null) { var address = ServiceManagerSection.Instance.Address; ConsulClientConfiguration config = new ConsulClientConfiguration() { Address = new Uri(address), Token = "245d0a09-7139-bbea-aadc-ff170a0562b1" }; client = new ConsulClient(config); } } private ConsulManager() { } /// <summary> /// 注册服务 /// </summary> public static void Register(string name, string address, int port, string checkHttpAddress = "") { var service = new AgentServiceRegistration(); service.Name = name; service.Address = address; service.Port = port; service.ID = address + ":" + port; AgentServiceCheck checkHttp = new AgentServiceCheck(); if (string.IsNullOrEmpty(checkHttpAddress)) { if (port == 80) { checkHttpAddress = string.Format("http://{0}/default/test", address); } else { checkHttpAddress = string.Format("http://{0}:{1}/default/test", address, port); } } checkHttp.HTTP = checkHttpAddress; checkHttp.Interval = new TimeSpan(0, 0, 10); checkHttp.DeregisterCriticalServiceAfter = new TimeSpan(0, 0, 120); service.Checks = new List<AgentServiceCheck>() { checkHttp }.ToArray(); var result = client.Agent.ServiceRegister(service).Result; if (result.StatusCode != System.Net.HttpStatusCode.OK) { throw new Exception($@"注册{address}-{name}服务失败"); } } public static void Remove(string address, int port) { string id = address + ":" + port; client.Agent.ServiceDeregister(id); } public static Dictionary<string, AgentService> FindAll() { var result = client.Agent.Services().Result.Response; return result; } } }
{ "acl" : { "enabled" : true, "default_policy" : "deny", "down_policy" : "extend-cache", "tokens" :{ "master": "245d0a09-7139-bbea-aadc-ff170a0562b1" } } }
其实还有更多的玩法,大家可以启动之后一个一个的设置来玩玩
原文地址:https://www.cnblogs.com/iversonlzy/p/11994445.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- rxjs fromEvent的实现
- rxjs switchMap的实现原理
- rxjs里scan operator的执行研究
- rxjs pipe和map组合的一个实际例子的单步调试
- Win10+Python2.7.14+cocos2d-x-3.17.2+VS2017环境搭建
- VUE-001-在表格单元格(el-table-column)中添加超链接访问
- 关于vue的title标签中出现的htmlWebpackPlugin.options.title
- dotnet tool 工具安装提示 Could not find a part of the path 安装失败
- dotnet core 进行 XML 序列化抛出 XmlSerializers dll 文件找不到
- C# dotnet 高性能多线程工具 ExecuteOnceAwaiter 只执行一次的任务
- 一道Postgresql递归树题
- 突击并发编程JUC系列-JDK1.8 扩展类型 LongAdder
- 利用tensorflow训练简单的生成对抗网络GAN
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.7):运算符(基本算数运算符、原码、反码、补码)
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.6):基本数据类型及字符集编码(字符编码和char型)