首页
免费后端云服务
关于
推荐
免费图床源码
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,724 阅读
2
微信小程序三级联动之多列选择器
9,608 阅读
3
小程序开发免费后端之神秘利器分享
9,538 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,083 阅读
5
学会微信服务端开发第一步
8,981 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Magic
累计撰写
124
篇文章
累计收到
113
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
推荐
免费图床源码
搜索到
4
篇与
的结果
2018-12-27
Golang-开发企业级资源权限管理【第一步表设计】-1
暂无简介
2018年12月27日
9,083 阅读
22 评论
11 点赞
2017-11-07
github-com-robfig-cron【Golang-常用包推荐】
企业项目完整之后,经常会有一些定时任务,例如备份、检查数据等,需要经常定时跑,如果我们能把这些定时任务,做成一个业务系统,通过与liunx下cron一样的规则,来表示定时执行的规则,岂不美哉。Golang的cron包帮忙解决这个问题。官方说明文档:https://godoc.org/github.com/robfig/cronpackage main import ( l4g "github.com/alecthomas/log4go" "github.com/robfig/cron" ) func text() { l4g.Info("text") } func main() { c := cron.New() c.AddFunc("* * * * * *", func() { text() }) c.Start() select {} } 这样就可以每秒执行一次了,更多执行规则,查看上面官方文档。
2017年11月07日
505 阅读
0 评论
28 点赞
2016-02-20
Golang-Gateway-API-搭建教程
Golang Gateway API 搭建教程随着微服务的兴起,行业里出现了非常多优秀的微服务网关框架,今天教大家搭建一套国人,用Golang写的微服务网关框架。这里啰嗦一句,可能到今天还有人不理解什么是微服务,为什么要用微服务。目前网上相对比较模糊,没有精确的定义,但大家的意思都差不多,这里个人通俗描述,就是小项目发展到大项目过程中,出于已维护,与稳定性等考虑,将一个整体项目分为多个微小服务。微服务网关的作用是在用户第一个网关服务器,你按照业务服务相关需求,给网关分流,相比云主机厂商提供的负载均衡器,强大在于你可以根据自己业务去分流,同时还以可以实现鉴权、校验、聚合、缓存等自定义服务,而云主机的负载均衡器只是一个简单按照流量给你负载均衡请求,不具有自定义编程性质。接下来教如何安装,以及注意事项。地址:https://github.com/fagongzi/gateway功能:流量控制熔断负载均衡服务发现插件机制路由(分流,复制流量)API 聚合API 参数校验API 访问控制(黑白名单)API 默认返回值API 定制返回值API 结果CacheJWT AuthorizationAPI Metric导入PrometheusAPI 失败重试后端server的健康检查开放管理API(GRPC、Restful)支持websocket支持在线迁移数据1.下载https://github.com/fagongzi/gateway2.编译cd $GOPATH/src/github.com/fagongzi/gateway/cmd/proxy go build -o proxy ./... cd $GOPATH/src/github.com/fagongzi/gateway/cmd/api go build -o apiserver ./...3.ECTD安装Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。etcd github地址:https://github.com/etcd-io/etcd当然,你也可以用命令行安装1、安装yum install etcd2、修改配置文件,主要是地址,如果不是很懂,可以看下etcd官方文档vim /etc/etcd/etcd.conf # [member] ETCD_NAME="k8s_master_ip_name" #范例: etcd1 ETCD_DATA_DIR="/work/etcd" ETCD_LISTEN_PEER_URLS="http://k8s_master_ip:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://k8s_master_ip:2379"3、启动systemctl daemon-reload systemctl enable etcd.service systemctl start etcd.service4、测试IP与端口改为配置的ip地址,如果没有使用,建议不要随意变动端口curl http://127.0.0.1:2379/version 如果返回{"etcdserver":"3.3.2","etcdcluster":"3.3.0"} 就是安装成功了基础软件都安装好了,我们就准备最低三台机器。运行环境我们以三台etcd、一台ApiServer,三台Proxy的环境为例环境信息组件环境说明etcd集群环境192.168.1.12配置服务器Proxy192.168.1.13代理服务器ApiServer192.168.1.14路由配置接口服务器1.启动 ApiServer服务启动ApiServer服务,看到以下截图就对了。2.启动代理服务看到以下截图就对了3.添加配置服务都启动后,我们添加配置路由。启动Proxy./proxy --addr=192.168.1.200:80 --addr-rpc=192.168.1.200:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test./proxy --addr=192.168.1.201:80 --addr-rpc=192.168.1.201:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test./proxy --addr=192.168.1.202:80 --addr-rpc=192.168.1.202:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test用户的API接入地址可以为:192.168.1.201:80、192.168.1.201:80、192.168.1.202:80其中任意一个如果能访问下你后面代理的接口内容,表示成功。如果觉得配置服务器API,命令行麻烦,可以下载WEB UI的管理控制台。下载地址:https://github.com/fagongzi/gateway-ui-vue最后大家有任何疑问,可以在本文章留言。
2016年02月20日
1,079 阅读
0 评论
10 点赞
2015-02-25
Golang-开发企业级资源权限管理【第一步表设计】
我们做企业级系统,权限控制主要分三类。【功能权限】:对菜单栏目进行权限控制,查询,增加,删除,修改功能,一般来说这种对资源的权限控制模型可以做到比较统一(用户、角色、资源)。【数据权限】:哪些人能看到哪些数据,例如淘宝本人只能看自己订单,北京地区部门领导可以看到电器类部门订单, 最高领导能看到人所有订单等等。 这种跟业务高度相关,(网络上资料暂时比较少)原理主要是对SQL语句添加where 条件【字段权限】:订单能看到哪些字段,如供应商,看不到内部价、 出厂价等信息。 (网络上资料暂时比较少)实现原理跟数据权限控制是一致的。对SQL语句添加select 条件这次,我们主要讲解最常用的功能权限控制的实现过程,这类WEB权限控制,在任意后端语言上都可以实现Java、Golang、PHP、Nodejs、Python等等,主要理解其数据模型。我们先看最终实现的功能效果。1.角色管理页面这里可以新增角色,删除角色, 注意的是,这里有一个最高权限角色超级管理员,不允许删除,还有一个批量导入管理员默认角色。2.新增角色,编辑角色这里把系统大部分资源路由进入权限控制,说的大部分是因为有些页面权限是不需要进行控制,例如登陆、注册、以及后台一些下拉选项(读取的数据库接口)。3.管理员列表4.给管理员分配权限涉及数据表1.用户表用户表主要增加字段 rolesId 角色ID,了解这个用户是哪个角色。2.角色表角色表主要记录这个角色的名称,描述CREATE TABLE `t_roles` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '' COMMENT '角色名称', `desc` varchar(50) NOT NULL DEFAULT '' COMMENT '描述', `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10003 DEFAULT CHARSET=utf8mb4 COMMENT='角色表';3.路由表这个表主要添加平台所有需要控制的路由方法,也可以不建表,写到配置文件里面,因为开发完需要控制的权限是固定的。上图:新增编辑角色,显示的就是这个表的内容CREATE TABLE `t_roles_tree` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '' COMMENT '路由名称', `path` varchar(50) NOT NULL COMMENT '路径', `methods` varchar(50) NOT NULL COMMENT '方法', `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `parentId` varchar(50) NOT NULL DEFAULT '' COMMENT '级别', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COMMENT='系统所有路由表';4.权限表权限表记录了,这个角色有哪些权限。 核心字段为 [角色ID,资源url, 方法]。这里用casbin 实现,因为casbin封装了很多验证函数,节省了一部分工作量。CREATE TABLE `casbin_rule` ( `id` int(11) NOT NULL AUTO_INCREMENT, `p_type` varchar(255) NOT NULL DEFAULT '', `v0` varchar(255) NOT NULL DEFAULT '' COMMENT '角色', `v1` varchar(255) NOT NULL DEFAULT '' COMMENT 'Url', `v2` varchar(255) NOT NULL DEFAULT '' COMMENT '方法', `v3` varchar(255) NOT NULL DEFAULT '', `v4` varchar(255) NOT NULL DEFAULT '', `v5` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb4;这一篇最后介绍下 Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。并指出主流后端语言,目前Casbin权限控制支持的语言有Go Java Node.js PHP Python C# Delphi,使用Casbin可以极大提高权限控制开发效率。当然你不用这个库,自己设计表,实现原理是一样。
2015年02月25日
4,152 阅读
0 评论
17 点赞