灵活使用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.com或 http://tlnet.top/contact 发信给我,谢谢!