Avvio dell’app Shiny dopo l’immissione della password

So che in Shiny Server Pro esiste una funzione di controllo della password. La domanda è che Shiny ha la funzione passwordInput (), che è come textInput () Qualcuno ha pensato a come fare quanto segue:

1) Avvio dell’applicazione solo dopo l’inserimento corretto della password 2) Avvio della parte di applicazione dopo l’immissione della password corretta (ad esempio, ho alcune tabs in shinydashboard e voglio accedervi solo con una password)

Grazie!

Ho intenzione di rispondere al n. 1 e al n. 2 potete semplicemente espandere il mio esempio. Seguendo questo esempio, cripta la password con md5 per Shiny-app. puoi fare quanto segue:

1) Crea 2 pagine e se l’utente immette il nome utente e la password renderUI puoi renderUI e usare htmlOutput per generare la tua pagina 2) Puoi htmlOutput la posizione della casella con nome utente e password con i tags come ho fatto e colorarli se vuoi anche usando i tags$style

È quindi ansible esaminare ulteriormente la pagina effettiva e specificare cosa deve essere creato come risultato di diversi utenti. Puoi anche guardare nelle windows pop-up JavaScript

EDIT 2018: dai anche un’occhiata all’esempio qui https://shiny.rstudio.com/gallery/authentication-and-database.html

Esempio di prima pagina

 rm(list = ls()) library(shiny) Logged = FALSE; my_username <- "test" my_password <- "test" ui1 <- function(){ tagList( div(id = "login", wellPanel(textInput("userName", "Username"), passwordInput("passwd", "Password"), br(),actionButton("Login", "Log in"))), tags$style(type="text/css", "#login {font-size:10px; text-align: left;position:absolute;top: 40%;left: 50%;margin-top: -100px;margin-left: -150px;}") )} ui2 <- function(){tagList(tabPanel("Test"))} ui = (htmlOutput("page")) server = (function(input, output,session) { USER <- reactiveValues(Logged = Logged) observe({ if (USER$Logged == FALSE) { if (!is.null(input$Login)) { if (input$Login > 0) { Username <- isolate(input$userName) Password <- isolate(input$passwd) Id.username <- which(my_username == Username) Id.password <- which(my_password == Password) if (length(Id.username) > 0 & length(Id.password) > 0) { if (Id.username == Id.password) { USER$Logged <- TRUE } } } } } }) observe({ if (USER$Logged == FALSE) { output$page <- renderUI({ div(class="outer",do.call(bootstrapPage,c("",ui1()))) }) } if (USER$Logged == TRUE) { output$page <- renderUI({ div(class="outer",do.call(navbarPage,c(inverse=TRUE,title = "Contratulations you got in!",ui2()))) }) print(ui) } }) }) runApp(list(ui = ui, server = server))