重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章运用简单易懂的例子给大家介绍Gin中实现HTTP和Basic Auth的方法,文章内容步步紧凑,希望大家根据这篇文章可以有所收获。
我们提供的服务有:成都网站建设、网站设计、微信公众号开发、网站优化、网站认证、怒江州ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的怒江州网站制作公司
我一直在研究 Go,具体的说应该是一直在研究 gin 。我的 pet 项目需要一个快速而粗糙的身份认证。
通常我不会建议使用 HTTP / basic auth 来保护资源,但对于这个项目,我没有数据库,我只是在这里和那里提供一些 markdown 文件。所以我这里会采用 HTTP / basic auth 来做身份认证。
gin 是我最喜欢的 web 框架之一,因为它有很多非常酷的中间件,它有点像 node.js 的express 框架 或 hapijs。
如果你在 go/src
目录下创建了一个 gin-http-auth
的项目,在项目的 main.go
文件里添加的的内容如下:
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Hello World!", }) }) r.Run() //监听 0.0.0.0:8080 }
接着在你的终端上运行 go get
命令,你的项目就开始运行了! 您现在需要通过运行以下命令启动刚出炉的 JSON API:
go run main.go
你可以在你的浏览器中输入 localhost:8080,应该可以看到 「message:Hello World !」
注意:提供 API 可能是 gin 的更大应用场景之一,但是你也可以直接渲染一系列模板。
用 Gin 框架来实现路由保护
假设你现在有一个 secret 的方法,你不希望所有人通过 url 访问的到,这是一个特殊的烧烤酱配方或一封含有一些不可告人的细节的的情书!
我们需要设置一些示例用户帐户并创建一个 secret 的路由,当然我们也可以设置一个默认的路由 /
。
让我们来看看这个最小可行的例子:
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "Hello World!", }) }) authorized := r.Group("/", gin.BasicAuth(gin.Accounts{ "user1": "love", "user2": "god", "user3": "sex", })) authorized.GET("/secret", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "secret": "The secret ingredient to the BBQ sauce is stiring it in an old whiskey barrel.", }) }) r.Run() // 监听服务在 0.0.0.0:8080 }
import
中多导入了一个 net/http
包, 用于格式化 http 响应的状态码。authorized.GET
只允许用户输入正确的组合。 它就像普通的路由器功能一样,但它需要身份验证当您更改文件内容时,请按「CTRL + C」以快速运行 Gin 框架的实例并重新启动它.
当你在你的浏览器中访问 localhost:8080/secret,你应该看到一个窗口提示你输入用户名和密码。
如果你正确输入的账户和密码,你将看到以下输出:
secret "The secret ingredient to the BBQ sauce is stiring it in an old whiskey barrel."
就这样已经搞定了! 你在 Go web 项目中创造了一个需要 http basic auth 的路由!
以上就是Gin中实现HTTP和Basic Auth的方法,详细使用情况还需要大家自己亲自动手使用过才能领会。如果想了解更多相关内容,欢迎关注创新互联行业资讯频道!