How to make cookies tamper-proof and secure by using encryption and hash / MAC
I am going to answer my own question based on the comment from Ricky Demer: 
https://crypto.stackexchange.com/a/16431/991

Given the attacker knew what the plaintext should be, for example:

{"userId":1}  --&gt; this is knownText


And with the first approach, which was

aes-ctr((plaintext || sha2-256(plaintext)) || iv 


Attacker can simply perform 

(knownText || sha2-256(knownText)) XOR cipherText


To compute the AES cipher stream. Without having to know the key, the attacker can then compute:

(modifiedText || sha2-256(modifiedText)) XOR [deduced AES cipher stream]


Where modifiedText can be

{"userId":2}  --&gt; I want to pretend to be user 2


and then append the original IV. 

This would decrypt fine and also validates fine given the first approach. Hence it is insecure.