You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny会话是否分配唯一会话ID/密钥?如何获取该信息?

关于Shiny R会话ID的疑问解答

首先明确回答:是的,不管是本地运行的Shiny会话,还是部署在Shiny Server上的会话,每个用户的独立会话都会被分配一个唯一的session ID/key。这个标识是Shiny用来隔离不同用户会话状态的核心机制,确保每个会话的交互、数据都是独立的。

如何获取会话ID?

获取这个ID的方式非常简单,在服务器端和客户端都能轻松拿到:

服务器端(R代码中)

在Shiny的server函数里,通过session$token就能直接访问当前会话的唯一ID。举个实用的小例子:

library(shiny)

ui <- fluidPage(
  h3("你的当前会话ID"),
  textOutput("current_session_id")
)

server <- function(input, output, session) {
  output$current_session_id <- renderText({
    paste("Session Token:", session$token)
  })
}

shinyApp(ui, server)

当你打开这个应用,或者用新标签页打开,每次都会生成不同的ID——这就是每个会话的唯一标识。

客户端(JavaScript代码中)

如果需要在前端JS里用到会话ID,也可以通过Shiny提供的全局变量Shiny.session.id获取。比如在UI里添加一段JS代码展示:

ui <- fluidPage(
  tags$script(HTML('
    window.addEventListener("load", function() {
      document.getElementById("js_session_id").innerText = 
        "JS获取的会话ID:" + Shiny.session.id;
    });
  ')),
  div(id = "js_session_id", style = "margin-top: 1rem;")
)

server <- function(input, output, session) {}

shinyApp(ui, server)

补充说明

  • 会话ID会在会话终止时(用户关闭页面、会话超时)自动失效,新会话会生成全新的ID,不会重复。
  • 不管是本地运行还是部署在Shiny Server(包括开源版、Pro版,或是Shinyapps.io平台),这个机制都是完全一致的,不需要额外配置就能自动生成唯一ID。

内容的提问来源于stack exchange,提问作者mizzlosis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:10:04