You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在shinydashboard中正确使用re-CAPTCHA验证功能?

正确使用方法

代码失效核心是模块调用写法与shinyCAPTCHA要求不匹配、渲染函数嵌套不符合规范,可运行的实现代码如下:

library(shiny)
library(shinydashboard)
library(shinyCAPTCHA)

ui <- dashboardPage(
  dashboardHeader(title = "CAPTCHA测试面板"),
  dashboardSidebar(),
  dashboardBody(
    recaptchaUI("test", sitekey = "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"),
    uiOutput("captcha")
  )
)

server <- function(input, output, session) {
  # 采用适配新版shiny的模块调用方式,替换旧版callModule写法
  result <- recaptchaServer("test", secret = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe")
  
  # 将plot渲染逻辑从renderUI中提取,避免重复渲染、响应异常问题
  output$plot1 <- renderPlot({
    req(result()$success)
    set.seed(122)
    histdata <- rnorm(500)
    hist(histdata[seq_len(input$slider)], main = "直方图", xlab = "数值")
  })
  
  output$captcha <- renderUI({
    req(result()$success)
    fluidRow(
      box(plotOutput("plot1", height = 250)),
      box(
        title = "控制项",
        sliderInput("slider", "观测值数量:", 1, 100, 50)
      )
    )
  })
}

shinyApp(ui, server)

注意事项

  • 代码中用到的sitekey和secret为公开测试密钥,仅可用于本地调试,正式上线前需要替换为你自行申请的专属密钥
  • 运行时需要保障网络可正常访问reCAPTCHA服务,否则验证组件会加载失败
  • 不要在render类函数内部嵌套定义其他output的渲染函数,会导致执行逻辑混乱、响应异常的问题

内容的提问来源于stack exchange,提问作者Rafael Díaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:18:01