安全でスケーラブルな認証システムの構築は、今日のデジタル環境におけるリアルタイム通信プラットフォームにとって極めて重要です。この記事では、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 中国語 Web サイトの他の関連記事を参照してください。