如何灵活使用tlnet快速构建网站 一 拦截器


灵活使用tlnet,可以减少许多工作量

tlnet的基本使用方法在  http://tlnet.top/tlnet  

以下是部分使用示例:

1.判断是否登录并跳转

tlnet.HandleWithFilter("/admin", loginFilter(), adminFunc) 
tlnet.HandleWithFilter("/user", loginFilter(), userFunc) 
func loginFilter() (f *tlnet.Filter) {                      // 拦截器
    f = tlnet.NewFilter()
    f.AddIntercept(".*?", func(hc *tlnet.HttpContext) bool {
        if !isLogin(hc) {                                  //检查是否登录
            hc.Redirect("/login")                          //跳转login
            return true
        }
        return false
    })
}

2. 检查是否登录并拦截未找到的页面返回404

tlnet.HandleWithFilter("/admin", loginFilter(), adminFunc) 
tlnet.HandleWithFilter("/user", loginFilter(), userFunc) 
func loginFilter() (f *tlnet.Filter) {                         // 拦截器
    f = tlnet.NewFilter()
    f.AddIntercept(".*?", func(hc *tlnet.HttpContext) bool {
        if !isLogin(hc) {                                      //检查是否登录
            hc.Redirect("/login")                              //跳转login
            return true
        }
        return false
    })
    f.AddPageNotFoundIntercept(func(hc *tlnet.HttpContext) bool {  //未找到请求页面
		hc.ResponseBytes(http.StatusMethodNotAllowed, nil)         //返回404
		return true
	})
}

3.静态资源的简单防盗链

tlnet.HandleStaticWithFilter("/pdf/", "./pdf", notAllow(".+?"), nil)       //不允许pdf使用链接地址单独下载
func notAllow(pattern string) (f *tlnet.Filter) {                          //notAllow过滤器
    f = tlnet.NewFilter()
    f.AddIntercept(pattern, func(hc *tlnet.HttpContext) bool {
        if !strings.HasPrefix(hc.ReqInfo.Referer, "http://tlnettop.top") {  //判断链接来源
            hc.ResponseBytes(http.StatusMethodNotAllowed, nil)              //返回405
            return true
        } else {
            return false
        }
    })
    return
}



有任何问题或建议请Email:donnie4w@gmail.comhttp://tlnet.top/contact  发信给我,谢谢!