Я относительно новичок в языке R, и у меня возникают трудности с вводом хеш-пароля. Тот, который я сделал, удалось только хешировать первый столбец. Я хочу хешировать каждый столбец соответственно.
library(pool)
library(RMySQL)
sqlname <- "SELECT userName FROM staff "
sqlname <-data.frame(dbGetQuery(pool, sqlname))
sqlpassword <- "SELECT password FROM staff"
sqlpassword <-data.frame(dbGetQuery(pool, sqlpassword))
user_base <- data_frame(
user = (sqlname),
password = (sqlpassword),
password_hash = sapply((sqlpassword), sodium::password_store),
permissions = c("admin", "standard"),
name = c("User One", "User Two")
)
View(user_base)
Вот что у меня есть
user1
123456
$7$C6..../....eo0MryfxLoInICi3RRGLBj48UCJD4XtGCbdUb7JhnO/$i/gw1MWGfD8Ri7l5l/Nvx.qUhvRTlKHWVssuiD4MV85
admin
User One
user2
147852
$7$C6..../....eo0MryfxLoInICi3RRGLBj48UCJD4XtGCbdUb7JhnO/$i/gw1MWGfD8Ri7l5l/Nvx.qUhvRTlKHWVssuiD4MV85
standard
User Two
Хэш-пароль должен отличаться от моего понимания, но я не могу этого сделать. Спасибо за помощь.
Вы используете data.frame
, который вы строите из результата запроса, в качестве столбца в своем окончательном выражении.
data.frame
— это список столбцов. Функция data.frame
при наличии списка столбцов (это то, что происходит, когда вы предоставляете user=(sqluser)
) способна справиться и обработает отдельные столбцы в финале data.frame
(то есть пользователь получит один столбец в sqluser
). Проблема заключается в вашем вызове sapply((sqlpassword), ...)
, который будет перебирать не отдельные пароли, а столбцы sqlpassword data.frame
), что в сочетании с тем фактом, что при предоставлении вектора строки sodium::password_store
вернет одно значение. Не то, что вы ожидаете!
так что лучший код
user_base <- data.frame(
user = (sqlname$userName),
password = (sqlpassword$password),
password_hash = sapply((sqlpassword$password), sodium::password_store),
permissions = c("admin", "standard"),
name = c("User One", "User Two")
)
Способ получения имени пользователя и пароля также немного запутан. Вы можете получить их в одном запросе
sqluser <- "SELECT userName, password FROM staff"
sqluser <-data.frame(dbGetQuery(pool, sqluser ))
Большое спасибо. Ваше объяснение действительно дало мне представление о RMySQL. Да пребудет с тобой сила.