Gin框架速学:简单Dao层代码封装、使用中间件模拟"用户认证"

本文介绍了如何在Gin框架中进行简单的Dao层代码封装,将处理路由的逻辑抽离到单独的函数。同时,通过使用中间件模拟用户认证,确保只有登录用户才能访问特定接口。在 Dao 层实现添加帖子的逻辑,并在路由配置中应用认证中间件,实现了对用户登录状态的检查。

简单的Dao层代码封装

创建dao/bbsDao.go文件,里面代码如下:

package dao

import (
	"github.com/gin-gonic/gin"
)

//获取某一帖子详细
func GetBBSDetail(context *gin.Context) {
	context.String(200, "获取id=%s的帖子", context.Param("id"))
}

//获取帖子列表
func GetBBSList(context *gin.Context) {
	if context.Query("user") == "" {
		context.String(200, "获取帖子列表")
	} else {
		context.String(200, "获取用户=%s的帖子", context.Query("user"))
	}
}

看代码,应该一句明白了些什么:我们把处理路由的代码逻辑抽出来封装到了另外的函数中。

然后路由处就可以这样写了:

	// /v1/bbs
	routerV1.GET("", dao.GetBBSList)
	// /v1/bbs/:id
	routerV1.GET(":id", dao.GetBBSDetail)

gin路由使用中间件进行用户认证

比如添加帖子接口是需要用户登录的

/v1/bbs/addBBS

我们先在dao层dao/bbsDao.go中把添加帖子的逻辑代码写好:

//添加帖子
func AddBBS(context *gin.Context) {
	context.String(200, "新增帖子成功")
}

给设置路由也很简单:

routerV1.POST("/addBBS",dao.AddBBS)

但是这还不行,我们这里要对这个接口进行用户认证啊。
怎么认证?使用中间件,所以上面应该这样写:

		routerV1.Use(middleware.MustLogin())
		{	//花括号表示代码块
			routerV1.POST("/addBBS",dao.AddBBS) //这是一POST请求
		}
routerV1.Use(middleware.MustLogin())
//表示routerV1路由组要使用middleware.MustLogin()这个中间件中的函数

下面我们就需要来看看MustLogin()了,其实也超简单(我们做的简单)

创建middleware/authMiddleware.go文件,在其中完成MustLogin()函数:

package middleware

import "github.com/gin-gonic/gin"

func MustLogin() gin.HandlerFunc {
	return func(context *gin.Context) {
		token, bool := context.GetQuery("token")
		if bool == false || token != "xxx" {
			context.String(401, "请登录")
			context.Abort()
		} else {
			context.Next()
		}
	}
}

这里就是简单的通过有没有token参数来检查用户是否登录
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值