راهنمای کنترلر احراز هویت
به راهنمای کنترلر احراز هویت فینچ خوش آمدید! این راهنما شما را با مراحل ساخت و استفاده از کنترلر احراز هویت در برنامه فینچ آشنا میکند. چه توسعهدهنده حرفهای باشید یا تازهکار، فینچ ابزارهای قدرتمندی برای سادهسازی توسعه برنامههای سمت سرور ارائه میدهد.
کنترلر احراز هویت چیست؟
در فینچ، کنترلر احراز هویت کلاسی است که مسئولیت احراز هویت و مجوزدهی کاربران را بر عهده دارد. این کنترلر درخواستهای احراز هویت را پردازش میکند، نشستهای کاربری را مدیریت میکند و مجوزهای کاربران را بررسی مینماید. کنترلر احراز هویت برای ایمنسازی برنامه و اطمینان از دسترسی فقط کاربران مجاز به منابع استفاده میشود.
ساخت کنترلر احراز هویت
کلاس 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();
}
}