파이썬에서 일련의 XMLRPC 클라이언트 - 서버 프로그램을 만들고 내 클라이언트를 인증하는 간단한 방법을 설정했습니다. 그러나 모든 것을 거의 코딩 한 후에는 일단 클라이언트가 인증되면 내가 설정 한 플래그가 클래스에서 글로벌이라는 것을 깨달았습니다. 즉 한 클라이언트가 인증되면 모든 클라이언트가 인증됩니다. 이유는 모르겠지만 SimpleXMLRPCServer가 클라이언트에 연결될 때마다 내 프로그램에 새로운 변수 집합이 만들어 질 것이라는 인상을 받았습니다.XMLRPC 유무에 관계없이 여러 클라이언트 용 Python Server
는 기본적으로 지금까지 설정되어 방식은
class someclass:
authenticate(self, username, pass):
#do something here
if(check_for_authentication(username, pass))
self.authenticated=True
other_action(self, vars):
if authenticated:
#do whatever
else:
return "Not authorized."
server=SimpleXMLRPCServer.SimpleXMLRPCServer("0.0.0.0", 8000)
server.register_instance(someclass())
server.serve_forever()
내가 (연결하는 각 클라이언트에 대해 설정해야합니다 즉, 인증 플래그) 내가 무엇을 찾고이 점을 해킹 할 수있는 방법 중 하나가 필요합니다, 또는 이것을 쉽게 할 수있는 또 다른 프로토콜. 어떤 검색을 한 후에 나는 뒤틀린 것을보고 있었지만, 이미 작성 되었기 때문에 그것을 다시 작성해야 할 때보 다 오히려 수정하고 싶습니다. 지금 당장은 클라이언트에서 사용자 이름과 암호를 얻을 수 있지만 리소스 (모든 요청에 대해 인증 필요)와 저장 대역폭 (클라이언트 중 일부는 매우 제한된 수량 만 보유하고 있음)의 경우, 오히려 그렇게하지 마십시오.
또한 내게 처음으로 이런 식으로 보안을 설정하려고합니다 (인터넷 보안에 대해 훈련받지 못했습니다). 내 논리에서 눈부신 오류가 보이면 제게 말해주십시오. 기본적으로,
당신이 거기에서했던 방식대로, 인스턴스화 된 메소드 내에서'authenticated' 만 선언/사용한다고 가정 할 때, 인증 된 변수는 클래스가 아닌 인스턴스에 로컬합니다. 그런 경우가 아니라면 인증 된 항목이 인스턴스가 아닌 클래스에 속해 있음을 표시하도록 코드를 업데이트해야합니다. – agf
조금 바꿨지 만, 변수를 인스턴스에 포함시키지 않겠습니까? 지금 내가 겪고있는 문제는 서버에 연결할 때마다 객체의 새로운 인스턴스를 만들지 않고 있다는 것입니다. 이는 내가 원하는 것입니다. 또는 각 호출에 대해 자체 인증 된 변수를 사용하여 새 스레드를 만들 수도 있습니다. –
아하, 나는 대답한다. 지금 대답한다. – agf