在安全的R Shiny应用程序中,如何使"onSessionEnded"仅在应用程序关闭时触发一次?



请参阅下面的代码。在安全页面下运行闪亮的应用程序时,我遇到了问题。"onSessionEnded"功能在我登录我的帐户时触发一次。然后当我关闭应用程序时,它会再次触发。

您知道如何使"onSessionEnded"在我登录帐户时不触发吗?理想情况下,"onSessionEnded"应该只在应用程序关闭时触发,对吗?有人可以给我一些建议吗?

您可以使用用户名:a和密码:a直接运行代码

library(shiny)
library(shinymanager)
credentials <- data.frame(
user = c("a", "b"),
password = c("a", "b"),
stringsAsFactors = FALSE
)
ui <- fluidPage(
verbatimTextOutput("auth_output")
)
ui <- secure_app(ui)
lang <- shinymanager:::language$new()
lang$add(
"Please authenticate" = "Test Page",
"Username:" = "Username:",
"Password:" = "Password:",
"Login" = "Sign in"
)
server <- function(input, output, session) {
res_auth <- secure_server(
check_credentials = check_credentials(credentials)
)
output$auth_output <- renderPrint({
reactiveValuesToList(res_auth)
})
session$onSessionEnded(function() {
print("onSessionEnded Run!!!")
})
}
shinyApp(ui, server)

我没有代表对您的帖子发表评论,但我相信这可以由另一个堆栈溢出帖子回答/解决。

闪亮服务器 - 如何使用session$onSessionEnded((

因为它可能应该在你的代码中实现:

library(shiny)
library(shinymanager)

credentials <- data.frame(
user = c("a", "b"),
password = c("a", "b"),
stringsAsFactors = FALSE
)
ui <- fluidPage(
verbatimTextOutput("auth_output")
)
ui <- secure_app(ui)
lang <- shinymanager:::language$new()
lang$add(
"Please authenticate" = "Test Page",
"Username:" = "Username:",
"Password:" = "Password:",
"Login" = "Sign in"
)
server <- function(input, output, session) {
users_data <- data.frame(START = Sys.time())
res_auth <- secure_server(
check_credentials = check_credentials(credentials)
)
output$auth_output <- renderPrint({
reactiveValuesToList(res_auth)
})

session$onSessionEnded(function() {
users_data$END <- Sys.time()
})
}
shinyApp(ui, server)

希望这有帮助

最新更新