راهنمای کنترلر احراز هویت

به راهنمای کنترلر احراز هویت فینچ خوش آمدید! این راهنما شما را با مراحل ساخت و استفاده از کنترلر احراز هویت در برنامه فینچ آشنا می‌کند. چه توسعه‌دهنده حرفه‌ای باشید یا تازه‌کار، فینچ ابزارهای قدرتمندی برای ساده‌سازی توسعه برنامه‌های سمت سرور ارائه می‌دهد.

کنترلر احراز هویت چیست؟

در فینچ، کنترلر احراز هویت کلاسی است که مسئولیت احراز هویت و مجوزدهی کاربران را بر عهده دارد. این کنترلر درخواست‌های احراز هویت را پردازش می‌کند، نشست‌های کاربری را مدیریت می‌کند و مجوزهای کاربران را بررسی می‌نماید. کنترلر احراز هویت برای ایمن‌سازی برنامه و اطمینان از دسترسی فقط کاربران مجاز به منابع استفاده می‌شود.

ساخت کنترلر احراز هویت

کلاس AuthController یک کلاس انتزاعی است که باید آن را برای ساخت کنترلر احراز هویت خود گسترش دهید. این کلاس مجموعه‌ای از متدها را فراهم می‌کند که می‌توانید برای سفارشی‌سازی منطق احراز هویت برنامه خود آن‌ها را بازنویسی کنید. این کلاس از Controller ارث‌بری می‌کند، بنابراین می‌توانید از تمام امکانات کنترلر در کنترلر احراز هویت نیز استفاده کنید.

برای ساخت کنترلر احراز هویت، باید کلاس AuthController را گسترش دهید. در اینجا یک مثال از نحوه ساخت یک کنترلر احراز هویت ساده آورده شده است:

نکته: User نوع مدل کاربری است که می‌خواهید در برنامه خود استفاده کنید. می‌توانید هر نوعی که می‌خواهید انتخاب کنید.

این مثال را در پروژه نمونه فینچ مشاهده کنید: 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: 'لطفا وارد شوید.',
      user: User(),
    );
  }

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

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

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

  @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);
  }

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

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