die Bewertung des Pro Servers RStudio Shiny versucht zu haben als ihre nicht einfacher Mechanismus ist Benutzerkonten verwalten für die Kunden eine glänzende App zuzugreifen.R glänzend Login hackt
Als solche versuche ich meine eigene Login-Mechanismus innerhalb Shiny zu schaffen, die in jeder Hinsicht funktioniert ok, abgesehen von der Anzeige von Dingen innerhalb der shinydashboard
Rahmen. Die Dinge scheinen abgeschnitten zu sein, bevor alle Inhalte angezeigt werden. Mein Login-Code ist eine leichte Verbesserung zu https://gist.github.com/withr/9001831, also vielen Dank dort.
Mein Code:
require(shiny)
require(shinydashboard)
my_username <- "test"
my_password <- "abc"
header <- dashboardHeader(title = "my heading")
sidebar <- uiOutput("sidebarpanel")
body <- uiOutput("body")
login <- box(title = "Login",textInput("userName", "Username"),
passwordInput("passwd", "Password"),
br(),actionButton("Login", "Log in"))
mainpage <- "some data"
ui <- dashboardPage(header, sidebar, body)
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
}
}
}
}
}
})
output$sidebarpanel <- renderUI({
if (USER$Logged == TRUE) {
dashboardSidebar(
sidebarUserPanel("myuser",subtitle = a(icon("user"), "Logout", href="__logout__")),
selectInput("in_var", "myvar", multiple = FALSE,
choices = c("option 1","option 2")),
sidebarMenu(
menuItem("Item 1", tabName = "t_item1", icon = icon("line-chart")),
menuItem("Item 2", tabName = "t_item2", icon = icon("dollar")),
menuItem("Item 3", tabName = "t_item3", icon = icon("credit-card")),
menuItem("Item 4", tabName = "t_item4", icon = icon("share-alt"))
))}
})
output$body <- renderUI({
if (USER$Logged == TRUE) {
dashboardBody(mainpage)
}
else {
dashboardBody(login)
}
})
}
shinyApp(ui, server)
Wenn ich laden Sie die App es wie folgt aussieht:
Wenn ich dann den Bildschirm leicht ändern Sie die Größe selbst behebt.
Irgendwelche Gedanken darüber, wie das seltsame Anfangsverhalten zu vermeiden, wäre sehr dankbar ..
dito auf die Frage "ist es sicher, diese Art von Login-Authentifizierung zu verwenden". Ich habe etwas Ähnliches implementiert, aber mit Salz und Pfeffer für das Passwort des Benutzers, obwohl ich nicht sicher bin, ob das leicht gehackt werden könnte. Es gibt auch keinen gespeicherten Anmeldestatus. Wenn der Benutzer den Bildschirm aktualisiert, muss er sich erneut anmelden. –
FYI, es ist nicht sicher, diese Art von Sache zu verwenden. Ich würde vorschlagen, PAM auf Ihrem glänzenden Server hinzuzufügen –
Danke für die Informationen. Es scheint, dass PAM nur mit der Pro-Version von Shiny funktioniert. Es gibt noch eine andere sichere Alternative, die mit der kostenlosen Version von Shiny kompatibel ist. – Geovany