go - echo框架,在哪一刻降级权限?

标签 go go-echo

我使用echo framework用于创建我的 API 服务器。它由 systemd 启动,默认需要 root 权限,才能获取 1024 以下的端口。为了安全起见,我喜欢在监听端口被关闭后降级权限。由echo框架获取。

我知道如何降级,但是我找不到合适的事件/回调?问题是,echo.Start()echo.StartAutoTLS() 不会返回。我可以创建一个并行线程并尝试查找回显 session 的某些状态值,告诉我端口已打开,但我也找不到此类状态指示。

如何确保在获取端口后执行一些代码(并且确定)?

到目前为止,我在服务器创建之前运行并行 go 线程,然后等待 5 秒进行降级。到目前为止它可以工作,但这很糟糕,我不喜欢它:-(

最佳答案

您可以使用 e.ListenerAddr() 检查端口是否打开。 它将返回 nil,直到端口打开。

func degradePrivileges(e *echo.Echo, userName string) { 
    for { adr := e.ListenerAddr() if adr != nil { 
        degradeMe(userName) break 
    } 
    time.Sleep(100 * time.Millisecond) } 
} 

关于go - echo框架,在哪一刻降级权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67867325/

相关文章:

go - 日志中间件的使用方法

go - 如何从 echo.Context.MultipartForm() 中检索 []string 类型的 form.Value

go - 将带有指针值的interface {}类型传递给interface {}参数

go - 复制一个结构

go - 如何保留子元素的外部 XML?

Go goroutine 与 channel 奇怪的结果

json - 无法从帖子请求中解析 JSON

go - 似乎无法开始使用 Go 和 Echo

google-app-engine - GAE/Go 在本地开发服务器挂起

go - atomic.LoadUint32 是必需的吗?