认证控制器指南

欢迎使用 Finch 认证控制器指南!本指南将引导您完成在 Finch 应用程序中创建和使用认证控制器的步骤。无论您是经验丰富的开发人员还是刚刚起步,Finch 都提供了一套强大的工具来简化服务器端 Web 应用程序开发。

什么是认证控制器?

Finch 中的认证控制器是处理应用程序身份验证和授权的类。它负责处理身份验证请求、管理用户会话和检查用户权限。认证控制器用于保护您的应用程序并确保只有授权用户才能访问某些资源。

创建认证控制器

AuthController 类是一个抽象类,您需要扩展它来创建自己的认证控制器。AuthController 类提供了一组方法,您可以重写这些方法来为应用程序自定义身份验证逻辑。它扩展了 Controller 类,因此您可以在认证控制器中使用 Controller 类的所有功能。

要创建认证控制器,您需要扩展 AuthController 类。以下是如何创建简单认证控制器的示例:

注意: User 是您想要在应用程序中使用的用户模型类型。您可以使用任何您想要的类型。

在 Finch 示例项目中查看此示例:example/lib/controllers/auth_controller.dart

class AppAuthController extends AuthController<User> {
    @override
  Future<bool> auth() async {
    return true;
  }

  @override
  Future<bool> authApi() async {
    return true;
  }

  @override
  Future<
      ({
        bool success,
        String message,
        User? user,
      })> checkLogin() async {
    return (
      success: true,
      message: 'Please login.',
      user: User(),
    );
  }

  @override
  Future<bool> checkPermission() async {
    return true;
  }

  @override
  Future<String> loginPost() async {
    return rq.renderString(text: "TEST", status: 403);
  }

  @override
  Future<String> logout() {
    return rq.renderString(text: "LOGOUT", status: 403);
  }

  @override
  void removeAuth() {
    // TODO: 实现 removeAuth
  }

  @override
  void updateAuth(String email, String password, User user) {
    // TODO: 实现 updateAuth
  }

  @override
  Future<String> newUser() {
    throw UnimplementedError();
  }

  @override
  Future<String> register() {
    throw UnimplementedError();
  }

  @override
  void removeAuth() {
    rq.session.remove('user');
    rq.removeCookie('user');
    userLogined = null;
  }

  @override
  void updateAuth(String email, String password, User user) {
    userLogined = user;
    rq.addSession('user', email);
  }
}