0

这是我在使用{polished}and时遇到的一个复杂的逻辑执行{brochure}。当按照开发团队给出的示例的相同顺序将secure_ui/secure_server放入 a时,Shiny App 在基础架构上的部署方式会发生变化。我不确定将 polsiehd 逻辑迁移到哪里。brochure::Page(){polished}{brochure}

差异

  • 没有 global.R 文件brochureApp()
  • 多次调用不同的 module_ui/server 函数,因为每个函数brochure::page()都是它自己的闪亮会话
  • 单页 shinyApp 与真正的多页 shinyApp
4

1 回答 1

1

当需要合并这两个逻辑时,您必须:

  1. 移入polished_config()-- globals.R> golem::runApp()[启动全局设置brochureApp()]
run_app <- function(
  onStart = NULL,
  options = list(),
  enableBookmarking = NULL,
  ...
) {

  # old 'globals.R' logic 
  polished_config(
    app_name = "humblFinance",
    api_key = "2JmavWZtcHBIifVl0FpPtczZjk7zfhvV6O"
  )

  with_golem_options(
    app = brochureApp(
      # Putting the resources here
      golem_add_external_resources(),
      page1(),
    ),
    golem_opts = list(...)
  )
}
  1. 包装每个brochure::page() ui/server with 抛光的::secure_ui/server()`
# an example login page
login <- function(id = "login", href = "/login") {


  page(
    href = href,
    ui = secure_ui(
      mod_login_ui(id = id),
      sign_in_page_ui = sign_in_custom()
      ),
    server = secure_server(
      function(input, output, session) {
      mod_login_server(id = id)
      }
    )
  )
}

笔记

sign_in_custom()是一个返回自定义 UI 对象polished::sign_in_default()以创建个人业务网页的函数。我建议包装polished::sign_in_default()在自定义全局函数中,因为您需要在任何时候都定义它,brochure::page()因为您希望在polished身份验证之后受到保护。

一旦您通过抛光验证了一个页面,您将能够在仍然登录时访问所有其他受保护的页面。注销并尝试访问任何一个受保护的页面将导致自定义登录页面

于 2022-03-04T13:02:28.003 回答