인증 동작을 수정하여 xhr을 통해 클라이언트 측에서 전체 프로세스를 수행 할 수 있습니다. 예를 들어 login form을 sumbit 할 때 login_handler는 새로운 html 페이지를로드하거나 임의의 리다이렉션 대신에 성공 및 오류에 대한 일부 json 데이터를 리턴합니다. 이 일을하기 위해 무엇을 조사해야합니까?XHR을 통한 로그인
답변
사용자 이름과 암호를 추출하여 매개 변수로 로그인 스크립트로 보내면 사용자의 유효성을 검사하고 이에 따라 결과를 반환 할 수 있습니다. 프로세스 자체가 보안 문제와 취약점으로을 가득이기 때문에,
if($_REQUEST['username'] == "correct_username" && $_REQUEST['password'] == "correct_password"){
return json_encode(array("success" => true, "data" => "stuff"));
}else{
return json_encode(array("success" => false));
}
나는이에 대한 제안, 그래도 :
$.ajax({
url: "login.php",
data: "username="+$("#username")+"&password="+$("#password"),
method: 'GET',
dataType: 'json',
async: false,
success: function(msg){
if(msg.success){
$("#content_area").html(msg.data);
}
}
});
어디 스크립트는 다음과 같이 보일 것이다. 서버에 자격 증명을 안전하게 게시하고 웹 서버가 세션을 처리하고 쿠키를 설정하고 적절하게 인증하도록 허용 한 다음 시도하십시오.
식별자를 가져 와서 remember 메서드를 호출하여 고유 한 로그인 컨트롤러를 작성할 수 있어야합니다.
는 먼저, 데이터베이스에서 사용자를 검색 할 암호를 확인하고 모든 것이 맞다면 당신은 인증 쿠키 설정할 수 있습니다 성공을 확인
response.headers = request.environ['repoze.who.plugins']['main_identifier'].remember(request.environ, {'repoze.who.userid':user_name})
은 또한 끝에 컨트롤러에서 JSON의 딕셔너리를 반환하거나하지 UI 목적을 위해
나는 TG2로 똑같은 일을하려했다. 이것은 amol의 답변을 연장 한 것입니다. 나는 그것을 사용하고 그것은 나를 위해 잘 작동합니다. 내가 무엇을 찾고 무엇을 말하는 것은 TG2 때문에 파이썬과에 적용 할 수 있지만
@expose("json")
def login(self, login, password):
identity = {"login": login,
"password": password}
# Authenticate the credentials
username = request.environ['repoze.who.plugins']['sqlauth'].authenticate(request.environ, identity)
if username:
print("Logged into " + username)
# Remember this user
response.headers = request.environ['repoze.who.plugins']['main_identifier'].remember(request.environ, {'repoze.who.userid':username})
return {"status": True, "username": username}
else:
print("Could not authenticate")
return {"status": False, "username": None}
헤더를 추가하거나 자동으로 처리하지 않아야합니까? –
모든 헤더를 덮어 쓰지 않아도됩니다. –
는, 내가 repoze.who의 사전 동작을 수정 가겠어요 방법이다. – rhyek
좀 더 구체적으로, 나는 repoze 뒤에 아이디어를 이해하려고 노력하고 있습니다. 플러그인, 그리고 지금까지 나는 이것에 대해 갈 길이되어야한다는 것을 알았지 만, 내가 필요한 것을 얻기 위해 어떤 예제도 찾지 못했습니다. – rhyek