Аутентификация пользователя и хранение пароля в R Shiny с использованием натрия - PullRequest
2 голосов
/ 18 февраля 2020

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

...