我的apache将LDAP登录传递给标题中的变量X-Remote-User:
但我不知道如何在闪亮的应用程序。任何想法?也许解决方案可以是一些java脚本?
vuv7lop31#
好的,我解决了,首先在ui.R js函数中包含:www/js/getLogin.js:
ui.R
www/js/getLogin.js
function requestLogin() { var client = new XMLHttpRequest(); client.open("GET", "yourshinyhostname", true); client.send(); client.onreadystatechange = function() { var resposne = client.getResponseHeader("X-Remote-User"); Shiny.onInputChange("getLogin", resposne); }; }
然后,您可以获取 * X-Remote-User * 值,例如通过单击按钮:ui.R:
includeScript("www/js/getLogin.js"), uiOutput("login_btn"), verbatimTextOutput("text")
server.R:
server.R
output$login_btn <- renderUI({ HREF <- sprintf(' <button id="get_login_btn" value="test" onclick="requestLogin();" > <font color="black"> <i class="fa fa-user"></i> Get login </font> </button> ') HTML(HREF) }) jsOutput <- reactive({ input$getLogin }) output$text <- renderPrint({ jsOutput() })
jhkqcmku2#
在server.R中添加一个对js函数的调用。这将在不点击按钮的情况下获取标题。例如:
output$text <- renderPrint({ js$requestLogin() jsOutput() })
cx6n0qe33#
你可以用session$request来访问头变量,下面是一个改编自GitHub的交互式例子。
session$request
library(shiny) server <- function(input, output, session) { output$summary <- renderText({ ls(env=session$request) }) output$headers <- renderUI({ selectInput("header", "Header:", ls(env=session$request)) }) output$value <- renderText({ if (nchar(input$header) < 1 || !exists(input$header, envir=session$request)){ return("NULL"); } return (get(input$header, envir=session$request)); }) } ui <- pageWithSidebar( headerPanel("Shiny Client Data"), sidebarPanel( uiOutput("headers") ), mainPanel( h3("Headers passed into Shiny"), verbatimTextOutput("summary"), h3("Value of specified header"), verbatimTextOutput("value") ) ) shinyApp(ui, server)
3条答案
按热度按时间vuv7lop31#
好的,我解决了,首先在
ui.R
js函数中包含:www/js/getLogin.js
:然后,您可以获取 * X-Remote-User * 值,例如通过单击按钮:
ui.R
:server.R
:jhkqcmku2#
在server.R中添加一个对js函数的调用。这将在不点击按钮的情况下获取标题。例如:
cx6n0qe33#
你可以用
session$request
来访问头变量,下面是一个改编自GitHub的交互式例子。