You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 20:06:02