java buffalo_当我传递中间件配置时,如何允许Buffalo(gobuffalo)中间件的skip()方法?...

news/2025/1/3 2:47:33/

我正在尝试创建一个自定义Buffalo(gobuffalo)中间件,它接受正在运行的配置 . 问题是我失去了使用此错误跳过中间件功能的能力:

actions / app.go:63:22:不能使用myMiddlewareFunc(类型为func(myConfig)buffalo.MiddlewareFunc)作为app.Middleware.Skip参数中的buffalo.MiddlewareFunc类型

我到目前为止的代码是:

package actions

import (

"github.com/gobuffalo/buffalo"

"github.com/gobuffalo/buffalo/middleware"

"github.com/gobuffalo/envy"

"github.com/gobuffalo/buffalo/middleware/csrf"

"github.com/gobuffalo/buffalo/middleware/i18n"

"github.com/gobuffalo/packr"

)

// ENV is used to help switch settings based on where the

// application is being run. Default is "development".

var ENV = envy.Get("GO_ENV", "development")

var app *buffalo.App

var T *i18n.Translator

type myConfig struct {

value string

}

// App is where all routes and middleware for buffalo

// should be defined. This is the nerve center of your

// application.

func App() *buffalo.App {

if app == nil {

app = buffalo.New(buffalo.Options{

Env: ENV,

SessionName: "_myapp_session",

})

// Automatically redirect to SSL

app.Use(ssl.ForceSSL(secure.Options{

SSLRedirect: ENV == "production",

SSLProxyHeaders: map[string]string{"X-Forwarded-Proto": "https"},

}))

if ENV == "development" {

app.Use(middleware.ParameterLogger)

}

// Protect against CSRF attacks. https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

// Remove to disable this.

app.Use(csrf.New)

// Wraps each request in a transaction.

// c.Value("tx").(*pop.PopTransaction)

// Remove to disable this.

app.Use(middleware.PopTransaction(models.DB))

// Setup and use translations:

var err error

if T, err = i18n.New(packr.NewBox("../locales"), "en-US"); err != nil {

app.Stop(err)

}

app.Use(T.Middleware())

app.Use(myMiddlewareFunc(myConfig{

value: "test value",

}))

app.Middleware.Skip(myMiddlewareFunc, TestHandler)

app.GET("/", HomeHandler)

app.GET("/test", TestHandler)

app.ServeFiles("/assets", assetsBox)

}

return app

}

// TestHandler is a test handler

func TestHandler(c buffalo.Context) error {

return c.Render(200, r.String("Test1234"))

}

func myMiddlewareFunc(config myConfig) buffalo.MiddlewareFunc {

return func(next buffalo.Handler) buffalo.Handler {

return func(c buffalo.Context) error {

c.Logger().Info("Test ", config.value)

return next(c)

}

}

}

因此,@ ttomalak使用接收器创建方法的方法与以下两种方法一样有效:

mw := myMiddlewareFunc(myConfig{

value: "test value",

})

app.Use(mw)

app.Middleware.Skip(mw, TestHandler)

config := myConfig{

value: "test value",

}

app.Use(myMiddlewareFunc(config))

app.Middleware.Skip(myMiddlewareFunc(config), TestHandler)

所有方式 require 调用中间件方法 . 此处显示的方法无法使用:

a.Middleware.Skip(Authorization, HomeHandler, ...)

我是新手,但我的感觉是这些方法不符合MiddlewareFunc接口所以调用它们并获得返回类型buffalo.MiddlewareFunc是允许它工作的 .


http://www.ppmy.cn/news/724402.html

相关文章

Buffalo Barricades 题解

Buffalo Barricades 题解 这题的难点在于某一头牛可能被多个农名占有。怎么处理呢? 我们仔细分析一下就会发现,每一个农名的篱笆最多被一个篱笆直接包含,所以我们把这些之间包含的农名之间连上边,最终形成的是一个森林。 但是我…

golang-buffalo框架

关于c.value("tx").(*pop.connection) var s x.(T) //语法为golang的类型断言, 如果x不为nil,且可以转换为T类型,则断言成功,返回一个T类型的变量 s, 如果T为接口,则要求x实现T,如果断言失败 panic c.valule() //获取context中的值,关于tx在下面 buffalo.context返回…

BUFFALO路由器,远程,端口映射

如上图所示,设置后,远程172.18.60.115即可远程到路由器配置IP为192.168.1.59那台PC 以上详细 右上角172.18.60.115为路由器IP 设置DMZ的IP192.168.1.59为想要访问的PC的IP 设置路由器网段192.168.1.1 路由器中DMZ主机是指什么,具体有什么…

7620a路由mysql_MT7620A路由刷DDWRT 及2.4G无线设置经验

本帖最后由 overthink 于 2015-6-15 15:10 编辑 MT7620A路由刷DDWRT 及2.4G无线设置经验 用了N久的buffalo WHR-HP-G54,刷了DDWRT,以前做主路由,后来我用ROS做主路由后WHR-HP-G54就用做AP接入了,一直很稳定,信号也不错,就是速度才54Mbps有点慢,顺手换了吧,入了一个MT76…

java buffalo_随你怎么玩!Buffalo 网络硬盘新潮流

现代时尚的办公环境是怎样的?ADSL、无线网络、笔记本、还有咖啡,惬意地被沙发包裹起来,自由自在地网上冲浪……;当然仅仅有这些还是不够,我们需要视频会议、需要网络下载、甚至打印、扫描,还有需要随时随地…

java buffalo_buffalo文档之buffalo-demo(1)--除法运算器

buffalo文档之buffalo-demo(1)--除法运算器 buffalo官方站:国内的ajax,amowa开源项目 doc.simle.jsp /p> "http://www.w3.org/TR/html4/loose.dtd">除法运算器 var endPoint"/BUFFALO"; var buffalo new Buffalo(…

java buffalo_初玩Buffalo

页面调用服务器的一个类里面的方法,做下面的步骤就可以了,前提是你配置好了buffalo那个demo。 只需执行下面三个步骤,就可以完成一个简单的乘法调用。 Spring例子(使用于1.2以前的版本) 1) HTML页面上 /buffalo/WebContent/pages/simple.h…

基于线性准则的考虑风力发电不确定性的分布鲁棒优化机组组合(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…