这是我在使用{polished}
和{brochure}
时遇到的一个复杂的逻辑执行。当按照{polished}
开发团队给出的示例的相同顺序将secure_ui
/secure_server
放置在brochure::Page()
内部时,Shiny应用程序在{brochure}
基础设施上的部署方式会发生变化。我不确定将polsiehd逻辑重新定位到哪里。
差异
- 没有全局。
brochureApp()
中的R文件 - 多次调用不同的module_ui/server函数,因为每个
brochure::page()
都是自己的闪亮会话 - 单页shinyApp与真正的多页shinyApp
当需要合并两个逻辑时,必须:
- 在
globals.R
中移动polished_config()
-->golem::runApp()
[启动brochureApp()
的全局设置]
run_app <- function(
onStart = NULL,
options = list(),
enableBookmarking = NULL,
...
) {
# old 'globals.R' logic
polished_config(
app_name = "humblFinance",
api_key = "xxxx"
)
with_golem_options(
app = brochureApp(
# Putting the resources here
golem_add_external_resources(),
page1(),
),
golem_opts = list(...)
)
}
- 包裹每个抛光的
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()
是一个从polished::sign_in_default()
返回自定义UI对象以创建个人业务网页的函数。我建议将polished::sign_in_default()
封装在自定义全局函数中,因为您需要在想要在polished
auth之后保护的任何brochure::page()
上定义它。
一旦你通过抛光验证了一个页面,你就可以在登录时访问所有其他受保护的页面。注销并尝试访问任何一个受保护的网页后,将产生一个自定义的登录页面