You don't have to do another query, just instead configure the authentication adapter to fetch the data for you:
public $components = array(
'Auth' => array(
'authenticate' => array(
'Form' => array(
'contain' => array(
// Whatever you want here
'Profile',
'Setting'
)
)
)
)
);
All your current logged in user data is then already available through:
$this->Auth->user()
Even if you don't redirect and if you do it will be still there.
You should use this way to access the user data over directly accessing the session because the user component abstracts it properly. See:
Why CakeSession::read() is not the best choice:
If your're not using a session based authentication system CakeSession::read("Auth.User"); will break. It will also break if the Auth session key changes for some reason, unlikely but not impossible.
Also calling the static CakeSession::read("Auth.User") method is not best practice here either. The session component can be extended and you can access the customized SessionComponent still through $this->Session using aliasing.
Overall I would avoid adding statics and singletons into my methods - it makes it hard to test them or change them. I would always wrap them in a method. This way you can mock them in a test.