Shinyauthr 项目使用教程

Shinyauthr 项目使用教程

shinyauthr R package with shiny authentication modules shinyauthr 项目地址: https://gitcode.com/gh_mirrors/sh/shinyauthr

1. 项目的目录结构及介绍

Shinyauthr 是一个 R 包,提供了用于向 Shiny 应用程序添加认证层的模块函数。以下是项目的目录结构及各部分功能的简要介绍:

  • R/: 包含了 R 语言代码文件,这些文件定义了包的主要功能和模块。
  • inst/: 存放安装包时使用的文件,例如示例应用程序的代码。
  • man/: 包含了 Roxygen2 格式的文档,这些文档在构建包时会被转换为用户可查阅的帮助文件。
  • tests/: 存储了测试代码,确保包的功能按照预期工作。
  • DESCRIPTION: 包的描述文件,包括包的名称、版本、依赖项和作者信息。
  • NAMESPACE: 包的命名空间文件,定义了包的导入和导出函数。
  • README.md: 包的 README 文件,提供了关于包的概述和如何安装的信息。
  • 其他文件:包括 .gitignore.Rbuildignore,以及可能的许可证文件等。

2. 项目的启动文件介绍

Shinyauthr 包的主要功能是提供认证模块,因此并没有一个传统意义上的“启动文件”。不过,使用该包时通常需要创建一个 Shiny 应用程序,以下是创建基本 Shiny 应用程序的一个示例:

library(shiny)
library(shinyauthr)

# 创建用户数据
user_base <- tibble(
  user = c("user1", "user2"),
  password = c("pass1", "pass2"),
  permissions = c("admin", "standard"),
  name = c("User One", "User Two")
)

# 定义 UI
ui <- fluidPage(
  # 登出按钮 UI
  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
  # 登录面板 UI
  shinyauthr::loginUI(id = "login"),
  # 用户信息表格输出
  tableOutput("user_table")
)

# 定义服务器逻辑
server <- function(input, output, session) {
  # 调用登录模块
  credentials <- shinyauthr::loginServer(
    id = "login",
    data = user_base,
    user_col = user,
    pwd_col = password,
    log_out = reactive(logout_init())
  )
  
  # 调用登出模块
  logout_init <- shinyauthr::logoutServer(
    id = "logout",
    active = reactive(credentials()$user_auth)
  )
  
  # 渲染用户信息表格
  output$user_table <- renderTable({
    req(credentials()$user_auth)
    credentials()$info
  })
}

# 运行 Shiny 应用程序
shinyApp(ui = ui, server = server)

这段代码创建了一个包含登录和登出功能的简单 Shiny 应用程序。

3. 项目的配置文件介绍

Shinyauthr 包没有特定的配置文件。不过,在使用过程中,可能需要对 Shiny 应用程序的配置进行调整,比如设置认证信息的存储方式。以下是一个使用 SQLite 数据库存储会话信息的示例:

library(shiny)
library(dplyr)
library(lubridate)
library(DBI)
library(RSQLite)

# 连接 SQLite 数据库
db <- if (file.exists("my_db_file")) {
  dbConnect(SQLite(), "my_db_file")
} else {
  dbConnect(SQLite(), "my_db_file")
  dbCreateTable(db, "sessionids", c(
    user = "TEXT",
    sessionid = "TEXT",
    login_time = "TEXT"
  ))
}

# 会话信息过期天数
cookie_expiry <- 7

# 添加会话 ID 到数据库
add_sessionid_to_db <- function(user, sessionid, conn = db) {
  tibble(
    user = user,
    sessionid = sessionid,
    login_time = as.character(now())
  ) %>%
    dbWriteTable(conn, "sessionids", ., append = TRUE)
}

# 从数据库获取会话 ID
get_sessionids_from_db <- function(conn = db, expiry = cookie_expiry) {
  dbReadTable(conn, "sessionids") %>%
    mutate(login_time = ymd_hms(login_time)) %>%
    as_tibble() %>%
    filter(login_time > now() - days(expiry))
}

这段代码演示了如何连接到 SQLite 数据库,并提供了两个函数:add_sessionid_to_db 用于在用户登录时保存会话信息,get_sessionids_from_db 用于获取有效的会话信息。这些函数可以与 Shinyauthr 包的认证模块一起使用,实现基于 cookies 的认证。

shinyauthr R package with shiny authentication modules shinyauthr 项目地址: https://gitcode.com/gh_mirrors/sh/shinyauthr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任铃冰Flourishing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值