안전하고 확장 가능한 인증 시스템을 구축하는 것은 오늘날의 디지털 환경에서 모든 실시간 통신 플랫폼에 매우 중요합니다. 이 글에서는 Django와 Django REST Framework를 사용하여 최신 실시간 협업 플랫폼인 CollabSphere용 인증 시스템을 구축한 방법을 안내해 드리겠습니다.
CollabSphere의 인증 시스템은 다음과 같은 주요 요구 사항을 염두에 두고 구축되었습니다.
맞춤형 사용자 모델
이 시스템의 중심에는 Django의 AbstractBaseUser를 확장하는 사용자 정의 사용자 모델이 있습니다.
class CustomUser(AbstractBaseUser, PermissionsMixin): email = models.EmailField(unique=True) username = models.CharField(max_length=50, unique=True) full_name = models.CharField(max_length=255) # Profile fields avatar = models.ImageField(upload_to='avatars/', null=True) bio = models.TextField(max_length=500, blank=True) # Status tracking is_online = models.BooleanField(default=False) last_seen = models.DateTimeField(null=True) #...
역할 기반 액세스 제어
사용자 권한을 관리하기 위해 유연한 역할 시스템을 구현했습니다.
class Role(models.Model): name = models.CharField(max_length=50, unique=True) description = models.TextField(blank=True) created_at = models.DateTimeField(auto_now_add=True) priority = models.IntegerField(default=0) custom_permissions = models.JSONField(default=dict) # Define permissions for each role can_moderate = models.BooleanField(default=False) can_manage_users = models.BooleanField(default=False) can_manage_roles = models.BooleanField(default=False) can_delete_messages = models.BooleanField(default=False) can_ban_users = models.BooleanField(default=False) class Meta: verbose_name = _('role') verbose_name_plural = _('roles') ordering = ['-priority'] def __str__(self): return self.name
등록 절차
Client -> RegisterView -> UserRegistrationSerializer -> CustomUserManager.create_user() -> Database -> Send verification email -> Assign default role -> Generate JWT tokens
신규 사용자 등록 시:
예시 등록 엔드포인트:
class RegisterView(generics.CreateAPIView): def create(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.save() # Send verification email user.send_verification_email() # Generate tokens refresh = RefreshToken.for_user(user) return Response({ 'user': UserSerializer(user).data, 'tokens': { 'refresh': str(refresh), 'access': str(refresh.access_token), } })
로그인 과정
Client -> LoginView -> UserLoginSerializer -> authenticate() -> JWT tokens -> Update online status -> Store device tokens -> Return user permissions
로그인 흐름에는 다음이 포함됩니다.
실시간 현황 관리
시스템은 실시간으로 사용자 상태를 추적합니다.
def update_online_status(self, status): self.is_online = status self.last_seen = timezone.now() self.save(update_fields=['is_online', 'last_seen'])
비밀번호 보안
이메일 확인
def send_verification_email(self): token = self.generate_verification_token() verification_url = f"{settings.FRONTEND_URL}/verify-email/{token}" send_mail( 'Verify your email address', render_to_string('users/verify_email.html', { 'user': self, 'verification_url': verification_url }), settings.DEFAULT_FROM_EMAIL, [self.email] )
JWT 인증
시스템은 보안 API 액세스를 위해 JWT 토큰을 사용합니다.
refresh = RefreshToken.for_user(user) return { 'refresh': str(refresh), 'access': str(refresh.access_token) }
시스템은 사용자당 여러 장치를 지원합니다.
device_tokens = models.JSONField(default=dict)
이를 통해 다음이 가능합니다.
이해의 분리
보안조치
성능 최적화
인증 흐름을 테스트하는 방법은 다음과 같습니다.
class CustomUser(AbstractBaseUser, PermissionsMixin): email = models.EmailField(unique=True) username = models.CharField(max_length=50, unique=True) full_name = models.CharField(max_length=255) # Profile fields avatar = models.ImageField(upload_to='avatars/', null=True) bio = models.TextField(max_length=500, blank=True) # Status tracking is_online = models.BooleanField(default=False) last_seen = models.DateTimeField(null=True) #...
보안 인증 시스템을 구축하려면 신중한 계획과 구현이 필요합니다. Django의 모범 사례에 따라 적절한 보안 조치를 구현하여 사용자 인증, 승인 및 실시간 상태 관리를 효과적으로 처리하는 CollabSphere용 강력한 시스템을 만들었습니다.
이 구현을 위한 전체 코드는 GitHub 저장소에서 확인할 수 있습니다.
위 내용은 CollabSphere 파트 A 실시간 통신 플랫폼을 위한 보안 인증 시스템 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!