【问题标题】:rstudioapi askForPassword without masking for username entryrstudioapi askForPassword 不屏蔽用户名输入
【发布时间】:2018-02-15 06:24:46
【问题描述】:

有没有办法在 rstudioapi::askForPassword 弹出窗口中禁用屏蔽,以便用户输入他们的用户名?

我正在构建一个可以与我的团队共享的函数,用于使用 ROracle pacakge 连接到我们的 Oracle 数据库实例

当前解决方案,

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

这会弹出如下提示: (image in link)

这是RStudio中描述的解决方案database docs that uses the Rstudio api

想资助一个不掩盖密码但弹出相同提示的解决方案(如果可能的话,写一行漂亮的代码......)

【问题讨论】:

  • 你使用的函数不允许无掩码输入,为什么不使用base中的readline()呢?如果您需要图形化,为此编写一个闪亮的小工具 (miniUI) 很简单。
  • 不使用来自 base 的 readline,因为我团队中的用户更容易看到弹出的模式(但承认可以使用它)。将研究闪亮的小工具用例,仅将闪亮用于成熟的网络应用
  • 预览版为我的组织标记了一个病毒总数错误,所以只需等待批准,然后将其推广给我的团队
  • 终于成功地获得了全球认可。现在让我的整个部门升级,这太棒了,谢谢

标签: r passwords rstudio roracle


【解决方案1】:

对于较新版本的 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 

当然,我偶然发现了这一点,因为 pw 提示文本框会自动取消对用户名的屏蔽...可能有更多信息:

【讨论】:

    【解决方案2】:

    如果您使用的是 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"
    )
    

    【讨论】:

    • 这非常有效!非常感谢,我正在让我的整个部门升级到最新版本
    猜你喜欢
    • 2016-02-15
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2014-04-02
    • 2021-01-04
    • 2021-03-03
    • 2013-03-04
    相关资源
    最近更新 更多