1 min read

Shiny웹앱에 로그인 기능 넣기

Shiny웹앱에 로그인 기능을 넣어보자. 샤이니 관련해서 이것저것 찾아보던 도중 shinymanager라는 패키지와, jinseob2kim님의 블로그를 알게 되었다. 정말 우연하게 찾게 되었으며, 다행히도 개념과 코드는 간단하다. 이번 글에서의 핵심은 shinymanager라는 패키지와 secure_app(), secure_server()라는 함수라고 볼수 있겠다. 최종적으로 결과물의 링크는 다음과 같다.

global.R

우선 shiny, shinymanager패키지를 불러와주자. 그리고 username, password를 구성하는 data.frame를 만들어 준다. 이곳에서는 user = shiny, password = 1234로 설정 해주었다. 그리고 이를 credentials라 하도록 하겠다.

library(shiny)
library(shinymanager)

credentials <- data.frame(
  user = c("shiny"),
  password = c("1234"), stringsAsFactors = FALSE)

ui.R

ui쪽에서 추가된점이 있다면 기본 ui에 secure_app(ui)라고 한번 더 ui를 감싸 준다.

ui <- fluidPage(
  tags$h2("My secure application"),
  verbatimTextOutput("auth_output")
)

ui <- secure_app(ui)

server.R

global.R에서 지정해준 credentialsfmf secure_server()함수를 사용해 다음과 같은 코드를 하나 넣어 주자. 간단하게도 이것으로 끝.

server <- function(input, output, session) {
  res_auth <- secure_server(check_credentials = check_credentials(credentials))
  
}

총평

shiny에 로그인 기능이 존재하는지는 생각지도 못했다. 여기서는 아주 간단하게 최소한의 로그인 기능만 소개 했으며 다음에 나오는 shinymanager에 대한 공식 패키지 링크에서 자세한 사항을 확인 할 수 있다.


참고