2016-10-25 4 views
2

제목에서 알 수 있듯이 다른 API를 사용하여 사용자를 인증하는 Django 앱을 개발하고 있습니다. 외부 API는 매우 간단하며 사용자가 올바르게 인증되면 인증서를 반환합니다. 내 앱은 인증서와 ID (세션 변수로 유지)를 제외한 모든 사용자의 정보를 보관해서는 안됩니다.Django 앱의 외부 인증

이 구현의 단점으로 나는 사용자가 is_authenticated, is_anonymous 또는 사용자의 권한을 얻는 지 확인하는 등 장고의 인증 시스템과 모든 실용적인 방법을 사용하지 않습니다.

내 앱의 일부 페이지에 액세스하려면 사용자가 로그인해야하므로 계속 로그인 할 수 있도록 로그인해야합니다. 따라서 @login_required을 사용하면 약간의 문제가 발생할 수 있습니다.

사용자 그룹 (일반 사용자, 관리자 등)에 따라 권한을 확인하고 앱의 일부 제한된 영역에 대한 액세스를 허용하려면 액세스 제어 모듈을 만들어야합니다.

내가이 모든 문제를 처리하기 위해 어떻게 장고의 인증 시스템을 사용자 정의 할 수 있는지 알고 계십니까? 당신이 django-lazysignup 프로젝트에서 살펴 또는 오히려 사용할 수있는 모든에서 사용자를 저장하지 않으려면

답변

2

당신은 당신의 request 내부 사용자 로그인 유지해야한다, 그래서 그냥 인증

from django.contrib.auth import login 

def authenticate_by_api_view(request): 
    certificate = do_the_magic() 

    if certificate_valid(certificate): 
     user = User() 
     #you can set ID here and save the user to the DB then 
     login(request, user) 

없이 그 로그 Django sessions framework

+0

현재 장고 세션을 사용하고 있지만 사용자 인증 여부를 확인할 수있는 기능은 제공하지 않습니다. 메서드를 호출 할 때마다 수동으로 세션 속성을 확인해야합니다. 게다가 로그 된 경우에만 사용자가 액세스 할 수 있어야하는 개인용 URL을 처리하기가 약간 어렵습니다. 그리고 당신 말이 맞아요, 나는 어떤 사용자도 구하고 싶지 않습니다. – revy

+0

만약 내가 너라면 * lazysignup *을 사용하고 싶지 않았어. 나는 임시 데이터를 저장하고있다. 결국 마지막 로그인 날짜 *가 오늘 이전 인 사용자를 제거하는 작업을 추가 할 것이다. –