장고 (Django) 웹 프레임 워크를 사용하여 웹 응용 프로그램을 만들었습니다. 보안을 위해 각 URL이 비밀번호로 보호되도록 미들웨어를 만들었습니다. 임의의 사람이 webapp의 URL을 입력했지만 로그인하지 않은 경우 미들웨어는 로그인 페이지로 이동합니다.장고 - URL 인증 당하나요?
이제는 더 큰 웹 응용 프로그램을 실행하는 동일한 서버로 /로부터 데이터를 게시하고 액세스하는 iOS 앱을 빌드하려고합니다. 아이디어는 iOS 앱이 서버에 URL 호출을하고 서버가 JSON 데이터를 뱉어 버릴 것이라는 것입니다. PhoneGape로 앱을 만들고 있으므로 모든 직선적 인 URL이 jQuery에서 호출됩니다.
웹 응용 프로그램에 사용자가 로그인해야하기 때문에 iOS 앱이 데이터 요청을하고 서버가 어떻게해서이 요청이 허락되었는지 확인할 수있는 방법이 필요합니다. 사용자가 로그인하지 않더라도 기본적으로 URL 별 유효성 검사의 행을 따라 (사용자를 로깅하지 않음).
내 생각 엔 최선의 방법은 동일한 미들웨어를 사용하는 것입니다.하지만 확장하여 /m/ios/
으로 시작하는 모든 URL이 다르게 처리되도록하는 것이 좋습니다. 앱 측에서는 URL을 요청하면 해당 URL에 사용자의 username
및 password
을 첨부 할 수 있습니다. 따라서 미들웨어는 사용자 이름/암호를 긁어내어 유효 사용자를 확인하지만 사용자를 로그인하지 않고 단순히 요청을 수행 할 수 있습니다.
이 상황을 처리하는 논리적 방법일까요? 더 좋은 방법이 있습니까?
편집 나는/부적절 불안 무엇인지 내가 뭘
가 여기 스탠드로 내 미들웨어 파일이지만, 경우에 다르게 작동하지 않는 나는이 접근에 상당히 열려있어, 말을해야 바르게. 유효성 검사가 작동하지만 URL에 대한 최종 호출이 완료되지 않았습니다.
from django.contrib.auth.views import login
from django.contrib.auth import authenticate
from django.http import HttpResponseRedirect, HttpResponse
from django.utils import simplejson
from django.core import serializers
class SiteLogin:
"This middleware requires a login for every view"
def process_request(self, request):
if request.path != '/accounts/login/' and request.user.is_anonymous():
try:
url = request.path.split('/')[1]
url = url + '/' + request.path.split('/')[2] + '/'
print(url)
if url == 'm/ios/':
usr = request.GET['username']
psw = request.GET['password']
user = authenticate(username = usr, password = psw)
if user is not None:
if user.is_active:
# This line doesn't actually carry out the request
return login(request)
else:
d = {}
d['creds_good'] = "false"
json = simplejson.dumps(d)
GET = request.GET
callback = GET.get('callback')
if callback:
json = '%s(%s)' % (callback, json)
return HttpResponse(json, mimetype='application/json')
except:
pass
if request.POST:
return login(request)
else:
return HttpResponseRedirect('/accounts/login/?next=%s' % request.path)
ios 요청에 대해 사용자에게 로그인하지 않으려는 이유가 있습니까? – toad013
로그인 할 수 있습니까? 셀 범위가있는 휴대 전화 앱에서도 로그인 할 수 있습니까? 로그인 세션은 얼마나 오래 지속됩니까? 셀 수신 감도가 떨어지는 문제가 있습니까? 기본적으로 나는 사용자의 모바일 기능을 유지하기 위해 일회성 인증을하는 것이 더 나을 것이라고 생각했다. 나는 정말로 귀하의 질문에 대한 답변을 가지고 있지 않다고 생각합니다. 단지 최선의 생각이 아닌 것으로 생각했습니다. – Garfonzo
URL에 암호를 전달하는 것은 매우 안전하지 않습니다. URL 스니핑에 취약합니다. @ toad013에 언급 된대로 로그인 할 수 있으며 일반 Django 인증을 사용하는 경우 각 요청에 쿠키가 전달됩니다. – arocks