EasyApp

登录和注册

了解如何在 EasyAppSwiftUI 中实现登录和注册

loginAndSignUp

登录和注册模块

LoginAndSignUp 模块是一个完整的用户认证解决方案,提供登录、注册、忘记密码和邮箱验证等功能。

我们后续提供更多精美登录和注册页面,敬请期待。

模块结构

LoginAndSignUp/
├── View/
│   └── LoginAndSignUp.swift        # 主视图,管理登录/注册切换
└── SubPages/
    ├── SignIn/View/
    │   └── SignInView.swift        # 登录界面
    ├── SignUp/View/
    │   └── SignUpView.swift        # 注册界面
    ├── ForgotPwd/View/
    │   └── ForgotPwdView.swift     # 忘记密码
    └── VerifyEmailView/View/
        └── VerifyEmailView.swift   # 邮箱验证

核心功能

1. 主视图切换

主视图使用状态管理在登录和注册界面间切换,并提供流畅的滑动动画:

struct LoginAndSignUp: View {
    @State private var showSignUp = false
    
    var body: some View {
        if showSignUp {
            SignUpView(showSignIn: $showSignUp)
                .transition(.asymmetric(
                    insertion: .move(edge: .trailing), 
                    removal: .move(edge: .trailing)
                ))
        } else {
            SignInView(showSignUp: $showSignUp)
                .transition(.asymmetric(
                    insertion: .move(edge: .leading), 
                    removal: .move(edge: .leading)
                ))
        }
    }
}

2. 登录功能

支持两种登录方式:

  • 邮箱密码登录
  • Apple ID 登录

关键特性:

  • 实时输入验证(邮箱格式、密码强度)
  • 忘记密码链接
  • 加载状态指示
  • Toast 消息提示
func signInWithEmail() {
    Task {
        do {
            try await authManager.signIn(email: account, password: password)
        } catch {
            print("signInWithEmailError:\(error)")
        }
    }
}

func signInWithApple(idToken: String) {
    Task {
        do {
            try await authManager.signInWithApple(idToken: idToken)
        } catch {
            print("signInWithAppleError:\(error)")
        }
    }
}

3. 注册功能

注册流程:

  1. 用户输入邮箱和密码
  2. 实时验证输入格式
  3. 提交注册请求
  4. 成功后自动跳转到登录页面

输入验证规则:

  • 邮箱格式验证
  • 密码长度(6-12位字符)
  • 密码必须包含字母
func onSignUp() {
    Task {
        do {
            try await authManager.signUp(email: account, password: password)
        } catch {
            print("onSignUpError:\(error)")
        }
    }
}

4. 忘记密码

提供密码重置功能,用户可以:

  • 输入邮箱地址
  • 设置新密码
  • 验证输入有效性
  • 发送重置请求

5. 邮箱验证

当用户注册后需要验证邮箱时,显示验证界面:

  • 提示用户查看邮件
  • 提供重发验证邮件功能
  • 监听应用状态变化
Button(action: {
    isLoading = true
    Task {
        do {
            try await authManager.resendVerificationEmail(email: email)
            isLoading = false
        } catch {
            isLoading = false
        }
    }
}) {
    Text("resend_verification_email")
        .font(.title3)
}

认证管理

模块通过 AuthManager 处理所有认证逻辑:

  • Supabase 集成:使用 Supabase 作为后端认证服务
  • 状态管理:自动管理用户登录状态
  • 会话处理:处理 token 刷新和过期
  • 订阅集成:支持 RevenueCat 和 StoreKit2

Last updated on