В системе, которую я разрабатываю, у меня есть 3 разных участника (пользователь, администратор, группа поддержки) с помощью приложения Shiny. Я хочу знать, как я могу дать аутентификацию этим трем актерам, чтобы каждый из этих актеров имел доступ только к своей странице. Я обнаружил, что это возможно с помощью блестящего сервера Pro, который не является бесплатным. Есть ли способ сделать это, а не использовать блестящий сервер pro. В UI.R код являются следующие:Аутентификация в блестящем приложении и нескольких страницах
library(shiny)
library(shinydashboard)
rm(list = ls())
Logged = FALSE;
my_username <- "test"
my_password <- "test"
ui1 <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
box(
ui = (htmlOutput("page"))
)
)
)
В Server.R коды являются следующие: библиотеки (shinydashboard)
библиотеки (блестящие)
server = (function(input, output,session) {
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"))}
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)
}
})
})
Я хотите перейти на другую страницу, которая только аутентифицирована для пользователя. Как я могу подключить UI.R к разным страницам в блестящем приложении? (Например, покажите страницу USER.R).
Я хочу иметь несколько файлов и страницу, вместо того, чтобы писать все команды в ui.r и server.r – user
Я думаю, что вы можете создавать различные r файл со списком необходимых элементов пользовательского интерфейса, а затем использовать источник в этих файлах в if-else 'output $ page <- renderUI ({if (user.role ==" user ") source (user.r) list_from_source }) ' – Batanichek
не могли бы вы дать простой пример, что я могу попробовать? – user