我在R-Plumber中内置了一个API。我想在此API中添加基本身份验证(即用户名和密码)。我该怎么做?
yhuiod9q1#
我已经弄清楚了如何使用R Plumber中提供的req对象来实现基本身份验证。我们将从req$HTTP_AUTHORIZATION访问Basic Authentication参数,然后使用base64 decode将它们解码为username:password格式,然后拆分字符串以检索用户名和密码。此外,编写一个函数来验证用户凭据是否有效。
# Define the authentication logic auth_basic <- function(username, password) { # Check if the username and password are valid valid_credentials <- username == "hello" && password == "user123" # Return TRUE if the credentials are valid, FALSE otherwise return(valid_credentials) } #* @get /secured function(req, res) { library(base64enc) encoded_string <- req$HTTP_AUTHORIZATION encoded_string <- gsub("Basic ", "",encoded_string) decoded_string <- rawToChar(base64decode(what = encoded_string)) username <- strsplit(decoded_string, ":")[[1]][1] password <- strsplit(decoded_string, ":")[[1]][2] cat("decoded string: ", decoded_string, "username: ", username, "password: ", password) if(is.na(username) | is.na(password)){ return("credentials not provided") } if(auth_basic(username, password) == FALSE){ return("invalid credentials") } return("This is a secured endpoint") }
1条答案
按热度按时间yhuiod9q1#
我已经弄清楚了如何使用R Plumber中提供的req对象来实现基本身份验证。
我们将从req$HTTP_AUTHORIZATION访问Basic Authentication参数,然后使用base64 decode将它们解码为username:password格式,然后拆分字符串以检索用户名和密码。
此外,编写一个函数来验证用户凭据是否有效。