Rstudioapi askForPassword不遮盖用户名输入

7

有没有一种方法可以禁用 rstudioapi::askForPassword 弹出窗口中的掩码,以便用户可以输入其用户名?

我正在构建一个函数,以便使用ROracle包连接到我们的Oracle DB实例,并与我的团队共享。

当前解决方案,

  connection <- dbConnect(
    driver
    , username = rstudioapi::askForPassword(prompt = 'Please enter username: ')
    , password = rstudioapi::askForPassword(prompt = 'Password: ')
    , dbname = 'my.connection.string'
  )

这会弹出以下提示框: (图片在链接中)

这是 RStudio 的解决方案,使用了 Rstudio api,在 数据库文档 中有描述。

想要寻找一个不遮蔽密码但可以弹出相同提示框的解决方案(如果可能,只需一行代码……)


你正在使用的函数不允许未经掩码处理的输入,为什么不使用base中的readline()呢?如果你需要它具有图形界面,编写一个Shiny Gadget(miniUI)非常容易。 - Kevin Arseneau
不使用基础的readline,因为对于我的团队成员来说,看到模态弹出框更容易(但承认可以使用它)。将研究闪亮小工具的使用情况,目前只用过闪亮制作完整的Web应用程序。 - blakiseskream
预览版为我们的组织标记了一个Virustotal错误,所以现在只是等待批准,然后将其推广给我的团队。 - blakiseskream
终于成功地获得了全球认可。现在我的整个部门都在升级,这太棒了,谢谢。 - blakiseskream
2个回答

9

如果您正在使用RStudio的预览版本(1.1.67+),则在rstudioapi包中有更新的函数可用,showPrompt似乎可以实现您想要的功能。

connection <- dbConnect(
    driver,
    username = rstudioapi::showPrompt(
      title = "Username", message = "Username", default = ""
    ),
    password = rstudioapi::askForPassword(prompt = "Password"),
    dbname = "my.connection.string"
)

这个工作得非常好!非常感谢,我将让整个部门升级到最新版本。 - blakiseskream

7

对于较新版本的 rstudioapi::askForPassword,我注意到以下内容...

  • 如果您在参数短语中只包含字符串username,则文本不会被屏蔽。
  • 包括password将严格执行屏蔽操作。

例如:

rstudioapi::askForPassword("Enter username") # <-- UNMASKED
rstudioapi::askForPassword("Enter password") # <-- MASKED

rstudioapi::askForPassword("Enter foobar xyz123 username") # <-- UNMASKED
rstudioapi::askForPassword("Enter foobar xyz123 username password") # <-- MASKED 

当然是无意中发现了这个问题,因为密码提示框自动为用户名取消遮罩… 可以在以下链接中找到更多信息:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接