CakePHP login action returning json
If you have another point to improve, please comment or answer, I will change the accepted answer


To put in CakePHP pattern I remove both lines:

$this-&gt;autoRender = false;
$this-&gt;response-&gt;type('json');


and change how I create and return the JSON file change this:

$this-&gt;response-&gt;body(json_encode($response));


to this:

$this-&gt;set('response', $response);
$this-&gt;set('_serialize', 'response');


the result:

public function login()
{
    if ($this-&gt;request-&gt;is('post')) {
        $user = $this-&gt;Auth-&gt;identify();
        if ($user) {
            $this-&gt;Auth-&gt;setUser($user);
            $response = new ResponseMessage();
            $response-&gt;code = CodeEnum::LOGIN_GRANTED;
            $response-&gt;name = NameEnum::LOGIN_GRANTED;
            $response-&gt;type = TypeMessageEnum::SUCCESS;
            $this-&gt;set('response', $response);
            $this-&gt;set('_serialize', 'response');
        }else {
            $response = new ResponseMessage();
            $response-&gt;code = CodeEnum::LOGIN_DENIED;
            $response-&gt;name = NameEnum::LOGIN_DENIED;
            $response-&gt;message = MessageEnum::USER_PASS_INCORRECT;
            $response-&gt;type = TypeMessageEnum::ERROR;
            $this-&gt;set('response', $response);
            $this-&gt;set('_serialize', 'response');
        }
    }
}