“拦截器”是框架执行一个方法之前或之后被调用的函数。它允许 面向方面编程, 作用如下:
创新互联公司专注骨干网络服务器租用10年,服务更有保障!服务器租用,雅安机房托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。
在 Revel 中, 有两种形式的拦截器:
函数拦截器:请参考 InterceptorFunc
接口.
方法拦截器:一个不带参数、并返回一个 revel.Result
的控制器方法
拦截器的执行顺序与添加位置相关
在一个请求生命周期内,可以注册四种拦截时间:
拦截器通常返回 nil
, 在这种情况下,需要继续处理请求,不能中断。
返回一个非 nil
revel.Result
的效果, 取决于拦截器被调用的时间:
在任何情况下,返回的结果都将附加到任何现有的结果上:
BEFORE:返回的结果是保证是最终的。
AFTER:它可能是一个进一步的拦截器,可以返回自己的结果。
下面是定义和注册函数拦截器的一个简单例子。
func checkUser(c *revel.Controller) revel.Result {
if user := connected(c); user == nil {
c.Flash.Error("请先登录")
return c.Redirect(App.Index)
}
return nil
}
func init() {
revel.InterceptFunc(checkUser, revel.BEFORE, &Hotels{})
}
方法拦截器有两种方式的签名:
func (c AppController) example() revel.Result
func (c *AppController) example() revel.Result
下面是个同样的例子,只能拦截一个控制器。
func (c Hotels) checkUser() revel.Result {
if user := connected(c); user == nil {
c.Flash.Error("请先登录")
return c.Redirect(App.Index)
}
return nil
}
func init() {
revel.InterceptMethod(Hotels.checkUser, revel.BEFORE)
}
网站名称:创新互联Revel教程:Revel拦截器
文章源于:http://www.mswzjz.cn/qtweb/news26/216226.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能