【发布时间】:2018-01-18 14:37:30
【问题描述】:
我正在构建一个闪亮的登录页面,用户输入用户名和密码并点击登录。
我有一个数据框,其中包含一组登录凭据,其中用户名和相应的密码分别存储在 username、password 列下。
下面是我在server.r中的脚本
reactive({validate(
need(input$Username == df$username, message = FALSE),
need(input$Password == df$password, message = FALSE)
)})
现在的问题是我无法验证username 及其对应的password,任何用户名和任何密码都可以登录。请帮助逻辑。
df
username password
admin admin
jhon jhon
test test
ipt ipt
rock rock
【问题讨论】:
-
这样存储密码是非常糟糕的做法。最好使用 openssl 包比较散列密码和加盐密码。
-
@JoshGilfillan 哦,好的,感谢您的建议,但我该如何实施呢?
-
使用 openssl 包中的 sha512() 函数来存储散列密码而不是普通密码。然后,当用户输入凭据时,将输入密码的哈希值与存储密码的哈希值进行比较。 sha512() 函数还有一个防止字典攻击的关键参数。
-
@JoshGilfillan,感谢您的解释。我一定会试试的。
-
或者你可以使用这个shinyproxy.io,但你需要的不仅仅是 R/shiny 编程