首页 > 解决方案 > 使用钠的 R Shiny 中的用户身份验证和密码存储

问题描述

我正在实现一个 ShinyApp 的登录页面(我不能使用 Shiny Server Pro 的任何付费功能或类似的东西)并且在以下网站上遇到了一些示例代码: https ://www.listendata.com/ 2019/06/how-to-add-login-page-in-shiny-r.html

它使用基于钠的钠包来存储和检查密码。相关代码是

credentials = data.frame(
  username_id = c("myuser", "myuser1"),
  passod   = sapply(c("mypass", "mypass1"), sodium::password_store),
  permission  = c("basic", "advanced"), 
  stringsAsFactors = FALSE,
)

用户通过文本框输入用户名和密码,然后 shinyapp 使用该函数检查匹配项sodium::password_verify

我注意到的第一件事是密码被存储为行名:

> credentials
        username_id
mypass       myuser
mypass1     myuser1
                                                                                                       passod
mypass  $7$C6..../....etc..
mypass1 $7$C6..../....etc..
        permission
mypass       basic
mypass1   advanced

这是一个错误吗?当然,这破坏了将密码存储为哈希值的意义。

一旦我添加row.names = NULL到数据框中,这是存储登录详细信息的一种相当安全的方法吗?是否有其他方法/软件包或其他免费服务来管理用户帐户和对 Shiny 的身份验证?

标签: rauthenticationshinypasswordslibsodium

解决方案


推荐阅读