欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

beego 会话控制 之过滤器功能

程序员文章站 2022-07-12 18:56:02
...

实现用户浏览部分页面未登录跳转到登录页面

https://beego.me/docs/mvc/controller/filter.md

beego 支持自定义过滤中间件,例如安全验证,强制跳转等。

过滤器函数如下所示:

beego.InsertFilter(pattern string, position int, filter FilterFunc, params ...bool)

InsertFilter 函数的三个必填参数,一个可选参数

- pattern 路由规则,可以根据一定的规则进行路由,如果你全匹配可以用 *

- position 执行 Filter 的地方,五个固定参数如下,分别表示不同的执行过程
    1. BeforeStatic 静态地址之前    
    2. BeforeRouter 寻找路由之前
    3. BeforeExec 找到路由之后,开始执行相应的 Controller 之前
    4. AfterExec 执行完 Controller 逻辑之后执行的过滤器
    5. FinishRouter 执行完逻辑之后执行的过滤器

- filter filter 函数 type FilterFunc func(*context.Context)

判断后台每个页面都需要登录才能访问

配置路由,执行路由过滤

router.go

	"github.com/astaxie/beego/context"
)
var FilterUser = func(ctx *context.Context) {
	userName := ctx.Input.Session("Name")
	if userName == nil {
		ctx.Redirect(302, "/login")
	}
}
func init() {
	// 验证用户是否已经登录
	beego.InsertFilter("/center/*",beego.BeforeRouter,FilterUser)
	// 在所有需要验证的路由前 添加/center/
	beego.Router("/center/showarticle", &controllers.ArticleController{}, "get:ShowArticle")
}
控制器 和 html 页面也要做修改,修改成重新设计的路由地址
## 控制器示例
	this.Redirect("/center/showarticle", 302)
	
## html页面示例	
	<a href="/center/showarticle" class="icon031">文章列表</a></li>