2

ユーザーを認証および承認するために、カスタム認証とカスタム ミドルウェアを作成する必要がある状況にあります。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 を削除して再試行しましたが、ユーザー名とパスワードをパラメーターとして使用して認証機能を起動しません。

これに対する解決策は何ですか?

4

1 に答える 1