如何使用shinyMobile实现App后端身份验证及登录账号密码校验
实现方案
shinyMobile登录功能的校验逻辑可按以下方式实现,核心是监听f7LoginServer返回的登录触发状态,完成账号密码校验后调用updateF7Login控制登录页状态:
f7LoginServer返回的是reactiveValues类型对象,包含用户输入的user(用户名)、password(密码),以及state(登录按钮触发状态)- 校验通过时将
updateF7Login的authenticated参数设为TRUE即可关闭登录页,展示主应用内容;校验失败时传入error参数即可在登录页展示错误提示
完整可运行代码如下:
library(shiny) library(shinyMobile) shinyApp( ui = f7Page( f7Login(id = "loginPage", title = "Welcome"), f7SingleLayout( navbar = f7Navbar( title = "TITLE", hairline = FALSE, shadow = TRUE ) %>% f7Align("center"), # 主内容 f7BlockTitle( title = HTML(paste("Welcome", textOutput("user"))), size = "large" ) %>% f7Align("center") ) ), server = function(input, output, session) { # 调用登录服务模块,获取用户输入和登录状态 loginData <- moduleServer(f7LoginServer, id = "loginPage") # 预设合法账号密码 correct.login <- c("user" = "user1", "password" = "thepass") # 监听登录提交动作,执行校验逻辑 observeEvent(loginData$state, { # 跳过未输入账号密码的初始状态 req(loginData$user, loginData$password) # 账号密码匹配校验 if (loginData$user == correct.login[["user"]] && loginData$password == correct.login[["password"]]) { # 校验通过:关闭登录页,进入主应用 updateF7Login( session = session, id = "loginPage", user = loginData$user, authenticated = TRUE ) } else { # 校验失败:登录页展示错误提示 updateF7Login( session = session, id = "loginPage", error = "用户名或密码错误,请重新输入" ) } }) # 主页面渲染当前登录用户名 output$user <- renderText({ req(loginData$user) loginData$user }) } )
内容的提问来源于stack exchange,提问作者user2120870
相关产品推荐
相关产品推荐

