Autenticación
El servidor debe cuidar el estado (por ejemplo, si el usuario ha iniciado sesión o no), no el cliente. Si bien es perfectamente correcto enviar JSON con información sobre el estado (por ejemplo, sí, ha iniciado sesión) a través de HTTPS, es el servidor el que debe recordar si el usuario en particular inició sesión o no. El servidor nunca puede confiar en el cliente.
La forma en que lo hace es usar una variable de sesión en el servidor, es decir, una variable conectada a este usuario en particular, que realiza un seguimiento si ella está registrada o no:
$_SESSION["loggedin"] = true;
Luego, cada vez que el usuario solicite información que solo debería estar disponible para los usuarios que han iniciado sesión, debe verificar que esta variable de sesión sea verdadera. De esa manera, no importa si alguien tuvo problemas con tu respuesta JSON, a menos que hayan proporcionado la contraseña correcta, el servidor no los verá como iniciados.
Lea más sobre las sesiones en PHP aquí y here .
Una cosa más: si su cliente posee datos confidenciales que no deberían estar disponibles para el usuario a menos que el servidor la autentique, entonces esta es una situación muy diferente, y deberá tomar precauciones adicionales. Lo mismo es cierto si el cliente realiza acciones en nombre del usuario.
Tecla de envío en POST
Otra cosa que estoy haciendo es que estoy enviando una clave con el POST para que el script PHP solo se ejecute si su clave y esa clave coinciden.
No estoy seguro de lo que estás diciendo aquí. Esto podría ser completamente superfluo, pero no estoy seguro de entenderlo correctamente.
Rodando tu propio
Tenga en cuenta que hacer un sistema de autenticación completo no es fácil. Hay un montón de escollos distintos a los que se tratan en este post. En lugar de hacer rodar el suyo, le sugeriría que verifique si existe algún marco PHP existente que pueda usar.