Я внедряю страницу входа в 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?