#r #shiny
Вопрос:
Мне было интересно, можно ли защитить блестящее приложение с помощью shinymanager, но с возможностью доступа к первой вкладке приложения перед вводом имени пользователя и пароля, в то время как вторая и третья вкладки скрыты ?
Я хотел бы, чтобы кнопка «подключиться» запустила страницу shinymanager, а затем отобразила другие вкладки.
Кто-нибудь знает, выполнимо ли это, или я должен использовать свою собственную форму аутентификации (что означает менее защищенную…) ?
Моя попытка:
library(shiny)
library(shinymanager)
library(shinydashboard)
library(shinyWidgets)
library(shinythemes)
credentials <- data.frame(
user = c("user1"),
password = c("1"),
stringsAsFactors = FALSE
)
# user interface
ui <- navbarPage(id="navbarid",
"TEST", theme = shinytheme("cosmo"),
header = tagList(
useShinydashboard()),
tabPanel(
"Welcome", fluidRow(align = "center",
column(6, offset=4,
box(title = "Authentification", background = "black",
fluidRow(column(6, align = "center", style='padding-top:20px;',
actionButton(inputId = "connect", label = "Log in")),
column(6, align = "center", style='padding-top:20px;',
actionButton(inputId = "register", label = "Register here"))))))),
tabPanel("Tab2", verbatimTextOutput("label1")
),
tabPanel("Tab3", verbatimTextOutput("label2")
))
ui <- secure_app(ui)
server <- function(input, output, session) {
res_auth <- secure_server(
check_credentials = check_credentials(credentials)
)
output$icon1 <- renderText(as.character(icon("sign-in-alt")))
output$icon2 <- renderText(as.character(icon("users")))
output$label1 <- renderText("First tab content here")
output$label2 <- renderText("Second tab content here")
}
shinyApp(ui, server)
Я попытался добавить
observeEvent(input$connect, {
res_auth <- secure_server(
check_credentials = check_credentials(credentials)
)})
в начале моей серверной части, но это не сработало !