ユーザーを認証および承認するために、カスタム認証とカスタム ミドルウェアを作成する必要がある状況にあります。POST リクエストでユーザー名とパスワードのパラメーターを確認するか、トークン ベースの認証用に Cookie が設定されているかどうかを確認する必要があります。さて、Pythonでは関数のオーバーロードが許可されていないことを知っているので、どうすればそれを達成できますか. カスタム認証とカスタムミドルウェアのコードを以下に示します。
カスタム ミドルウェア:
from django.contrib.auth import authenticate
class AuthMiddleWare(object):
def process_request(self, request):
if request.path != '/favicon.ico':
print "inside process_request " + request.path
if request.method == 'POST' and request.POST.has_key('username' ) and request.POST.has_key('password'):
authenticate(username = request.POST.get('username'),password = request.POST.get('password'))
if 'SPRING_SECURITY_REMEMBER_ME_COOKIE' in request.COOKIES:
authenticate(token = request.COOKIES.get('SPRING_SECURITY_REMEMBER_ME_COOKIE'))
return None
カスタム認証バックエンド:
from core.api import NcpAPI
class CustomNCPAuthBackend(object):
"""
This is custom authentication backend.
Authenticate against the webservices call.
The method below would override authenticate() of django.contrib.auth
"""
def authenticate(self, username = None, password = None):
print "inside authenticate of username and password with username being : "+username
return None
def authenticate(self,token=None):
print "inside authenticate of token with token being : "+token
return None
問題は、ポストリクエストでユーザー名とパスワードをチェックしているときでも、トークンが存在するためトークンを呼び出すことですが、どうすればそれを強制できますか?
Cookie を削除して再試行しましたが、ユーザー名とパスワードをパラメーターとして使用して認証機能を起動しません。
これに対する解決策は何ですか?