shinymanager通过单击按钮注销

iqxoj9l9  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(97)

我想注销和身份验证屏幕出现时,用户点击一个按钮。

credentials <- data.frame(
  user = "x", 
  password = "x"
)

library(shiny)
library(shinymanager)

ui <- fluidPage(
  tags$h2("My secure application"),
  actionButton("action_logout", "Logout!")
)

ui <- secure_app(ui)

server <- function(input, output, session) {

  res_auth <- secure_server(
    check_credentials = check_credentials(credentials)
  )

  observeEvent(input$action_logout, {
    # logout
  }) 
}

shinyApp(ui, server)

我发现shinymanager的默认注销按钮在右下角有id = ".shinymanager_logout",所以我尝试用session$sendCustomMessage(".shinymanager_logout", 1)调用它。
如何使用自定义注销按钮注销用户?

2izufjch

2izufjch1#

最简单的方法是使用session$reload()重新加载shiny会话,因此在您的示例中:

observeEvent(input$action_logout, {
  session$reload()
})

但也许我们可以在包中实现一些东西,你可以在本期评论:https://github.com/datastorm-open/shinymanager/issues/7

tyky79it

tyky79it2#

在函数secure_server中,按钮.shinymanager_logout触发以下代码:

observeEvent(session$input$.shinymanager_logout, {
  token <- getToken(session = session)
  logout_logs(token)
  .tok$remove(token)
  clearQueryString(session = session)
  session$reload()
}, ignoreInit = TRUE)

因此,我认为您可以使用自定义注销按钮注销用户,方法是将session$input$.shinymanager_logout替换为自定义注销按钮id。

相关问题