在闪亮的应用程序中重定向
Posted
技术标签:
【中文标题】在闪亮的应用程序中重定向【英文标题】:Redirect in Shiny app 【发布时间】:2017-11-07 12:21:28 【问题描述】:我正在尝试让我的 Shiny 应用程序将用户重定向到另一个页面。我正在使用httr
发送GET
请求并查看用户是否已登录。如果他没有,我想将他重定向到另一个链接。
我可以只使用 R / Shiny 来做到这一点,还是需要一些额外的库?
样本:
library(httr)
library(shiny)
shinyServer(function(input, output)
rv <- reactiveValues()
rv$mytoken = session$request$token
observeEvent(input$button1,
rv$a <- GET("my.url:3405/authtoken",
add_headers(
.headers = c("token" = rv$mytoken)
))
if (rv$a$status_code == 200)
else
# redirect magic
)
shinyUI(fluidPage(
actionButton(button1, "btn")
))
【问题讨论】:
能否提供带有用户名和密码的示例代码? 它以不同的方式工作:我在session$request
环境中有身份验证令牌,我检查GET
是否在服务器上相同。因此,我根据收到的状态代码重定向用户。如果需要,我会提供一些代码
没有它你仍然可以提供示例应用程序,所以当false
然后重定向
一个例子就足够了吗?
【参考方案1】:
如果不是true
,这会将您导航到谷歌
library(shiny)
jscode <- "Shiny.addCustomMessageHandler('mymessage', function(message) window.location = 'http://www.google.com';);"
ui <- fluidPage(
tags$head(tags$script(jscode)),
checkboxInput("Redirect","Redirect",value = T)
)
server <- function(input, output, session)
observeEvent(input$Redirect,
if(!input$Redirect)
session$sendCustomMessage("mymessage", "mymessage")
)
shinyApp(ui,server)
【讨论】:
像往常一样,你让它工作:)我正在寻找的东西,谢谢!似乎您“强制”它重定向用户。 Shiny 默认不支持这种行为吗? 在ui
中很容易做到,您可以在其中绑定按钮和链接,但您需要从服务器发回重定向,shiny
团队添加了sendCustomMessage
,这非常有用.所以只要通过它,你会很快拿起它
看看paste
是的,我的错,我现在就处理它。再次感谢。
我只使用了window.top.location.href
而不是window.location
,效果很好。和平!【参考方案2】:
只是为了更新。还有一种更简单的方法...
shinyjs::runjs(paste0('window.location.href = "...";'))
不要忘记 UI 中的useShinyjs()
。
【讨论】:
以上是关于在闪亮的应用程序中重定向的主要内容,如果未能解决你的问题,请参考以下文章
在 WEB 应用程序中重定向到不同 URL 的正确方法是啥?