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>
上一篇: 网站敏感词过滤的实现(附敏感词库)
下一篇: Linux命令---tail 加过滤功能