修改flexdashboard的shinyauthr

2024-01-28

我已经构建了一个使用运行时闪亮的交互式 Flexdashboard,我想创建一个用户身份验证登录模块/页面。我偶然发现保罗·坎贝尔 (Paul Campbell) 的闪亮作者包 https://paul.rbind.io/2018/11/04/introducing-shinyauthr/这似乎可以做到这一点,但对于闪亮的仪表板,我想为我的 Flexdashboard 调整此代码。我尝试将其应用到我的 Rmarkdown 文档中,但它仅导致登录模块显示在侧边栏面板中或显示在显示屏右侧主面板中的图表上方。无论哪种方式,该模块都无法达到阻止用户在输入用户名和密码之前使用仪表板的预期目的。下面是一个最小的可重现示例,说明如何在闪亮的应用程序中使用身份验证模块。有人可以建议如何修改 Flexdashboard 的代码吗?

    library(shiny)
    library(shinyauthr)
    library(shinyjs)
    
    # dataframe that holds usernames, passwords and other user data
    user_base <- data.frame(
      user = c("user1", "user2"),
      password = c("pass1", "pass2"), 
      permissions = c("admin", "standard"),
      name = c("User One", "User Two"),
      stringsAsFactors = FALSE
    )
    
    ui <- fluidPage(
      # must turn shinyjs on
      shinyjs::useShinyjs(),
      # add logout button UI 
      div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
      # add login panel UI function
      shinyauthr::loginUI(id = "login"),
      # setup table output to show user info after login
      tableOutput("user_table")
    )
    
    server <- function(input, output, session) {
      
      # call the logout module with reactive trigger to hide/show
      logout_init <- callModule(shinyauthr::logout, 
                                id = "logout", 
                                active = reactive(credentials()$user_auth))
      
      # call login module supplying data frame, user and password cols
      # and reactive trigger
      credentials <- callModule(shinyauthr::login, 
                                id = "login", 
                                data = user_base,
                                user_col = user,
                                pwd_col = password,
                                log_out = reactive(logout_init()))
      
      # pulls out the user information returned from login module
      user_data <- reactive({credentials()$info})
      
      output$user_table <- renderTable({
        # use req to only render results when credentials()$user_auth is TRUE
        req(credentials()$user_auth)
        user_data()
      })
    }
    
    shinyApp(ui = ui, server = server)

Update:在尝试找到实现shinyauthr代码的方法失败后,我尝试了闪亮的管理器包 https://github.com/datastorm-open/shinymanager并调整代码以与 Flexdashboard 一起使用bthieurmel 在 github 上的帮助 https://github.com/datastorm-open/shinymanager/issues/51。所以他们的解决方案将是以下步骤。希望这对其他人有帮助!

  1. 使用自定义 css 设置 flexdashboard。
    ---
    title: "Old Faithful Eruptions"
    output: 
      flexdashboard::flex_dashboard:
        css: styles-auth.css
    runtime: shiny
    ---
  1. 您需要添加一个 css 文件,其中至少包含以下内容。将 css 文件保存到项目目录中名为“styles-auth.css”的文件夹中。
    .panel-auth {
      position: fixed;
      top:0;
      bottom: 0;
      left: 0;
      right: 0;
      background-color: #FFF;
      opacity: 1;
      z-index: 99997;
      overflow-x: hidden;
      overflow-y: scroll;
    }
  1. 然后在全局块中,加载shinymanager并定义凭据。
    ```{r global, include=FALSE}
    # load data in 'global' chunk so it can be shared by all users of the dashboard
    library(datasets)
    library(shinymanager)
    data(faithful)
    
    # define some credentials (you can also use sqlite database)
    credentials <- data.frame(
      user = c("shiny", "shinymanager"),
      password = c("azerty", "12345"),
      stringsAsFactors = FALSE
    )
    ```
  1. 最后,在任何地方调用这两个模块:
    ```{r}
    auth_ui(id = "auth")
    
    auth <- callModule(
        module = auth_server,
        id = "auth",
        check_credentials = check_credentials(credentials) # data.frame
        # check_credentials = check_credentials("path/to/credentials.sqlite", passphrase = "supersecret") # sqlite
    )
    ```

完整的解决方案:因此完整的示例如下所示。显然,不可能在 flexdashboard 中使用这个包的管理模式,这对我来说很好,但我还没有了解如何使用这个包的 SQLite 功能,因为我对此很陌生,所以关于这方面的任何其他建议会有帮助的。

    ---
    title: "Old Faithful Eruptions"
    output: 
      flexdashboard::flex_dashboard:
        css: styles-auth.css
    runtime: shiny
    ---
    
    ```{r global, include=FALSE}
    # load data in 'global' chunk so it can be shared by all users of the dashboard
    library(datasets)
    library(shinymanager)
    data(faithful)
    
    # define some credentials (you can also use sqlite database)
    credentials <- data.frame(
      user = c("shiny", "shinymanager"),
      password = c("azerty", "12345"),
      stringsAsFactors = FALSE
    )
    ```
    
    Column {.sidebar}
    -----------------------------------------------------------------------
    
    Waiting time between eruptions and the duration of the eruption for the
    Old Faithful geyser in Yellowstone National Park, Wyoming, USA.
    
    ```{r}
    selectInput("n_breaks", label = "Number of bins:",
                choices = c(10, 20, 35, 50), selected = 20)
    
    sliderInput("bw_adjust", label = "Bandwidth adjustment:",
                min = 0.2, max = 2, value = 1, step = 0.2)
    ```
    
    Column
    -----------------------------------------------------------------------
    
    ### Geyser Eruption Duration
    
    ```{r}
    
    renderPlot({
      hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks),
           xlab = "Duration (minutes)", main = "Geyser Eruption Duration")
    
      dens <- density(faithful$eruptions, adjust = input$bw_adjust)
      lines(dens, col = "blue")
    })
    
    
    auth_ui(id = "auth")
    
    auth <- callModule(
        module = auth_server,
        id = "auth",
        check_credentials = check_credentials(credentials) # data.frame
        # check_credentials = check_credentials("path/to/credentials.sqlite", passphrase = "supersecret") # sqlite
    )
    ```

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改flexdashboard的shinyauthr 的相关文章

  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • Asp.net Identity 注销其他用户

    我正在使用 Asp net Identity 来验证用户身份 并尝试从管理端锁定任何用户 但是当我锁定任何在线用户时 它并没有注销 我读过很多关于我的问题的评论 但它们都不起作用 我尝试使用 UserManager UpdateSecuri
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • 无法更改 RStudio 中的 R 版本

    我的 RStudio V 0 99 491 无法更改 R 版本 我以平常的方式行事Global Options gt R Version 然后它挂起并且不再工作或反应 R 运行良好的初始版本是R 3 1 0 我以前从未遇到过这样的问题 也许
  • 如何使用系统凭据自动登录网站?

    我需要为 Intranet 用户开发一个 Web 应用程序 我不希望他们每次访问该网站时都输入登录凭据 它应该从系统用户名和密码自动加载 即 如果他们拥有有效的系统用户名和密码 他们应该能够登录应用程序 我正在使用Java 如何满足这个要求
  • 删除字符串中的转义符,或者“我怎样才能让 \ 不碍事?”

    转义字符在 R 中会带来很多麻烦 前面的问题证明了这一点 更改列中的值 https stackoverflow com questions 10046357 change the values in a column 10046412 10
  • 使用 R 将我的 shapefile 数据投影到传单地图上

    我 在 Win7 上 试图获取我的 shapefile 数据 Here https www dropbox com s f3d46itleoozzjz shapefiles zip dl 0是数据文件 要使用显示leaflet包裹 但没有任
  • rvest如何通过id选择特定的css节点

    我正在尝试使用 rvest 包从网页中抓取数据 简单来说 html 代码如下所示 div class style div
  • 什么时候在“strsplit”中设置“perl=TRUE”不起作用(按预期或根本不起作用)?

    我只是在尝试优化一些代码时做了一些基准测试并观察到strsplit with perl TRUE is faster比跑步strsplit with perl FALSE 例如 set seed 1 ff lt function paste
  • 无法在 Azure AD 的 access_token 中获取电子邮件声明

    我们已在 Azure 中为 SPA 配置了应用程序注册 用于身份验证代码流程 We have added email under optional claims as per below 清单文件配置如下 id
  • 为什么 statsmodels 和 R 的逻辑回归结果不同?

    我正在尝试比较 python 的 statsmodels 和 R 中的逻辑回归实现 Python版本 import statsmodels api as sm import pandas as pd import pylab as pl i
  • R:大向量的高效迭代子集和过滤

    我想更快地执行以下操作 Logic 我有一个向量big共 4 个元素1 2 3 4 我还有一个相同长度的阈值向量1 1 3 1 4 1 5 1 我希望每个元素找到第一个元素的索引next元素高于相应的阈值 在这种情况下 我的预期输出是 2
  • dplyr / left_join 中的嵌套管链

    在尝试获取分组滞后变量的过程中 仅使用这是不可能的 lag 建议的解决方案是将数据拉出 滞后不同的行 然后重新加入它 我更喜欢在不创建中间对象的情况下执行此操作 并且希望在链中间执行此操作 然而 它似乎没有像我预期的那样工作 问题似乎是使用
  • 有没有办法在 RStudio 中调试 RScript 调用?

    假设我从命令行运行 R 脚本 如下所示 Rscript prog R x y z 我想检查某一行的代码 目前 我无法在 RStudio 中以交互方式调试它 因为我不知道如何传递参数 由于它设计为从命令行运行 因此如何通过命令行 RStudi
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • ExtJS:使用“记住我”功能登录

    我正在尝试创建一个具有非常常见的 记住我 功能的简单登录窗口 登录验证是通过 AJAX 风格完成的 因此浏览器不会记住我的输入 我的方法是使用内置的state功能 但是如何使用它让我很困惑 Ext state Manager setProv
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是

随机推荐

  • UITableView didSelectRow 返回错误的行索引值[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我选择一行时 它会返回更大或更小的行索引值 但永远不会返回正确的值 如图所示 我选择了14 返回了16 这是我使用的代码 IBO
  • 使用 data.table 包重新编码变量

    如果我想使用 R 重新编码变量data table 语法是什么 我看到了一些 ans 但发现它们不合适 例如如果我有一个名为gender 我想将性别 0 重新编码为未知 1 为男性 2 为女性 这是我尝试的方法 Name lt c John
  • 应用程序购买推荐链接[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有什么方法可以创建指向 App Store 的引用链接 并在链接中添加一些设备 ID 例如 b7a
  • 区分注册和使用 Meteor.loginWithExternalService() 登录

    Meteor 提供了一组loginWithExternalService 方法 例如loginWithTwitter 允许用户创建帐户或通过这些第三方身份验证提供商重新登录 但有没有办法区分这两种行为呢 即让人们sign in与 Twitt
  • 不为特定列更改创建修订

    我有一个经过审核的模型 其中有一列我必须定期更新 我不想为此专栏的每次更改创建修订版 即使属性 X 已更改 是否有任何配置不创建修订版 执行您要求的操作的唯一开箱即用的方法是实施有条件审计 文档中描述的条件审核方法要求用户提供自己的事件侦听
  • 来自基于 OWIN 的 WebAPI 的飞行前选项 CORS 令牌请求出现 400 错误

    确实很奇怪 我尝试向 WebAPI2 基于 OWIN 发出 CORS 请求以获取身份验证令牌 每隔一段时间它总是失败 就像第一个请求失败 但第二个请求将通过 第三个失败了 但第四个会成功 我不明白为什么它有一半的时间有效 我检查浏览器请求
  • Kivy:如何创建透明背景/画布,使按钮看起来漂浮在桌面上

    我正在尝试创建一个在单板计算机 特别是使用 armbian 的 OrangePi One PC 上运行的视频播放应用程序 我在使用 ffpyplayer kivy 使用的视频播放器 创建流畅的视频时遇到问题 因此 我决定简单地运行在视频前面
  • DateTime AddMinutes 方法不起作用

    我的方法的目的是获取 currentTime 并将其设置回 20 分钟 据我所知 我的方法是正确的 但输出显示了其他内容 这是我的代码 DateTime currentTime DateTime Now double minuts 20 c
  • Shell编程:同时执行两个应用程序

    我有两个应用程序 我们称它们为 APP1 和 APP2 我想要那些 两个在我的机器上并行执行 它们没有必要完全从 同一时间 但应该大致在同一时间开始 最初的想法是有一个外壳 脚本如下所示 APP1 APP2 这是技巧还是我需要插入等待语句以
  • 为什么 std::ranges::view_interface 使用 CRTP

    根据cppreference 定义视图的辅助类模板view interface https en cppreference com w cpp ranges view interface使用奇怪的重复模板模式 CRTP 技术 它们背后的设计
  • Vim:重新映射键以切换行编号

    I added set number nnoremap
  • 音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音

    将 AVAudioSessionModeMeasurement 与 AVAudioSessionCategoryPlayAndRecord 一起使用过去可以在 iOS 5 x 6 x 和 7 0 下正常工作 但现在在 iOS 7 1 下的某
  • 如何在 symfony 中尝试 Catch

    情况 trollCommand php foreach trolltypes as type type Frost RandomBroken Forest try output gt writeln type troll get type
  • Typeahead - 可滚动下拉菜单

    看起来 CSS 不适用于我的 Typeahead 我正在尝试重现可滚动下拉菜单 如下所示https twitter github io typeahead js examples https twitter github io typeah
  • Eclipse Juno 中的全屏编辑器 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有一些插件允许在 Eclipse 中进行全屏编辑 但我找不到可以在 Juno 上安装的插件 有谁知道这样的事情是否存在 例如 当我在市场上搜索 全屏
  • 如何用猪拉丁语组合/连接两个袋子

    我有两个数据集 A uid url B uid url 现在我做了一个cogroup C COGROUP A BY uid B BY uid 我想将 C 更改为 group AS uid DISTINCT A url B url 我的问题是
  • MVC模型布尔显示是或否

    我在 MVC 4 实体框架 4 5 的模型中有一个布尔字段 我想在我的视图中显示该字段 我用这个电话 item isTrue 但我得到的是真还是假 我想在 true 时得到 yes 在 false 时得到 no 请问我该怎么办 在您看来 i
  • PHP 从视频中提取音频

    我需要一种从某些视频中提取音频的方法 用 PHP 我有来自 YouTube 的视频流 所以我真的很喜欢它 如果它是动态流 而不是我必须将其保存到临时目录并在那里处理它 尽管这是可以接受的 谢谢 Isaac Waller编辑 更具体地说 我有
  • 将动画翻译到 Android 中的正确位置

    我在我的应用程序中为图像创建了动画 图像从屏幕中间开始直到左上角 现在我需要确保图像放置在所有设备中的正确位置 左上角 目前 对于不同的设备 它被放置在左上角的不同位置 我该如何解决它 我的代码如下
  • 修改flexdashboard的shinyauthr

    我已经构建了一个使用运行时闪亮的交互式 Flexdashboard 我想创建一个用户身份验证登录模块 页面 我偶然发现保罗 坎贝尔 Paul Campbell 的闪亮作者包 https paul rbind io 2018 11 04 in