草庐IT

在线客服系统的源码中Golang Gin框架实现IP白名单机制

我的客服系统有一些接口是专门给内部调用的,只允许其他内部系统来调用,不允许随意访问,可以使用IP白名单机制使用Gin框架实现IP白名单机制可以使用中间件的方式实现。你可以编写一个中间件函数,在每个请求到来时检查它的IP地址是否在白名单中,如果不在,则返回错误信息。例如,你可以这样编写中间件函数:funcIPWhiteList(whitelist[]string)gin.HandlerFunc{returnfunc(c*gin.Context){//获取请求的IP地址ip:=c.ClientIP()//检查IP地址是否在白名单中allowed:=falsefor_,value:=rangewhi

Golang的JWT权限校验解析

JWT校验配置文件packageconfigtypeJWTstruct{ SigningKeystring`json:"signingKey"yaml:"signing-key"`//jwt签名 ExpiresTimeint64`json:"expiresTime"yaml:"expires-time"`//过期时间 Issuerstring`json:"issuer"yaml:"issuer"`//签发者}工具结构体packagepkgimport( "errors" "time" "catering/global" "catering/model/system/request" "gith

Golang的JWT权限校验解析

JWT校验配置文件packageconfigtypeJWTstruct{ SigningKeystring`json:"signingKey"yaml:"signing-key"`//jwt签名 ExpiresTimeint64`json:"expiresTime"yaml:"expires-time"`//过期时间 Issuerstring`json:"issuer"yaml:"issuer"`//签发者}工具结构体packagepkgimport( "errors" "time" "catering/global" "catering/model/system/request" "gith

记webman 构造函数__construct 里request问题 通过中间件 使用jwt验证用户登录状态

因为webman是常驻内存框架当前进程初始化一次后就不会再初始化了所以构造函数里传递request是不好用的。这里使用中间件来代替了解中间件:中间件一般用于拦截请求或者响应。例如执行控制器前统一验证用户身份,如用户未登录时跳转到登录页面。例如响应中增加某个header头。例如统计某个uri请求占比等等。中间件洋葱模型:中间件和控制器组成了一个经典的洋葱模型,中间件类似一层一层的洋葱表皮,控制器是洋葱芯。如果所示请求像箭一样穿越中间件1、2、3到达控制器,控制器返回了一个响应,然后响应又以3、2、1的顺序穿出中间件最终返回给客户端。也就是说在每个中间件里我们既可以拿到请求,也可以获得响应,这样我

记webman 构造函数__construct 里request问题 通过中间件 使用jwt验证用户登录状态

因为webman是常驻内存框架当前进程初始化一次后就不会再初始化了所以构造函数里传递request是不好用的。这里使用中间件来代替了解中间件:中间件一般用于拦截请求或者响应。例如执行控制器前统一验证用户身份,如用户未登录时跳转到登录页面。例如响应中增加某个header头。例如统计某个uri请求占比等等。中间件洋葱模型:中间件和控制器组成了一个经典的洋葱模型,中间件类似一层一层的洋葱表皮,控制器是洋葱芯。如果所示请求像箭一样穿越中间件1、2、3到达控制器,控制器返回了一个响应,然后响应又以3、2、1的顺序穿出中间件最终返回给客户端。也就是说在每个中间件里我们既可以拿到请求,也可以获得响应,这样我

Gin框架实战——HTML渲染

  Gin框架实战——HTML渲染最近使用Go的Gin框架做了个简单的前端网页,记录一下细节~1.加载静态文件    由于网页需要使用css、图片等渲染,而静态文件必须先声明:否则模板中调用加载不出来,这个很重要,即使你把文件放到对应路径下,html中也写了相应的路径,但是开启go服务端的网页,会显示不出来样式、图片等。因此需要加载静态文件。//Default返回一个默认的路由r:=gin.Default()r.StaticFS("/public",http.Dir("D:\\Gotest\\web1\\web\\static"))//相当于更换路径。加载静态文件r.StaticFS("/fo

Gin框架实战——HTML渲染

  Gin框架实战——HTML渲染最近使用Go的Gin框架做了个简单的前端网页,记录一下细节~1.加载静态文件    由于网页需要使用css、图片等渲染,而静态文件必须先声明:否则模板中调用加载不出来,这个很重要,即使你把文件放到对应路径下,html中也写了相应的路径,但是开启go服务端的网页,会显示不出来样式、图片等。因此需要加载静态文件。//Default返回一个默认的路由r:=gin.Default()r.StaticFS("/public",http.Dir("D:\\Gotest\\web1\\web\\static"))//相当于更换路径。加载静态文件r.StaticFS("/fo

客服系统即时通讯IM开发(二)Golang + Gin框架实现服务端WebScoket【唯一客服】网站在线客服系统

我的客服系统使用的Golang+Gin作为后端服务,所以下面的代码是演示demo在Go语言中使用Gin框架实现WebSocket的方法如下:安装gin-gonic/websocket库。在Gin的路由处理函数中使用ws.Upgrade函数将HTTP连接升级为WebSocket连接。在路由处理函数中使用conn.ReadMessage和conn.WriteMessage函数接收和发送消息。例如:packagemainimport("net/http""github.com/gin-gonic/gin""github.com/gin-gonic/websocket")varupgrader=web

客服系统即时通讯IM开发(二)Golang + Gin框架实现服务端WebScoket【唯一客服】网站在线客服系统

我的客服系统使用的Golang+Gin作为后端服务,所以下面的代码是演示demo在Go语言中使用Gin框架实现WebSocket的方法如下:安装gin-gonic/websocket库。在Gin的路由处理函数中使用ws.Upgrade函数将HTTP连接升级为WebSocket连接。在路由处理函数中使用conn.ReadMessage和conn.WriteMessage函数接收和发送消息。例如:packagemainimport("net/http""github.com/gin-gonic/gin""github.com/gin-gonic/websocket")varupgrader=web

Go Gin使用get/post方法获取网页数据,获取form表单数据

简单介绍一下Go中Gin使用get和post方法获取前端数据1.使用get方法获取url中的参数因为我使用的网页只需要在url上传一个参数,简单介绍一下,get方法的传参吧,可能不全,后续补充~在主函数使用get/post方式加载需要从网页中使用get/post方法获取数据如下(默认使用get方法加载页面)对第三个使用get方法加载页面,并使用get方法获取URL中的参数。前端使用传参网页的url为:后端获取参数:addProof.GetRouteParams函数为:funcGetRouteParams(c*gin.Context){name=c.Query("name")c.HTML(htt