Есть ли простой способ получить пользовательские данные AuthComponent из представления в CakePHP?
Согласно разделу cakebook компонента аутентификации , я могу реализовать простую аутентификацию с помощью следующего контроллера пользователей:
class UsersController extends AppController {
var $name = 'Users';
var $components = array('Auth'); // Not necessary if declared in your app controller
/**
* The AuthComponent provides the needed functionality
* for login, so you can leave this function blank.
*/
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
}
Я хотел бы иметь возможность, на мой взгляд, сделать что-то вроде следующего:
<?php
$username = $auth->user('username');
echo "Welcome " . $username;
?>
Есть ли простой способ сделать это, или мне нужно перезаписать функцию входа в систему и сохранить имя пользователя в сеансе?
Обновление
Ответ Александра - это именно то, что я хотел. Тем не менее, я буду добавьте следующее на случай, если кто-то еще запутается, как я.
Мне потребовалось некоторое время, чтобы понять, что если вы измените модель, используемую Auth (например, у вас может быть таблица "люди" вместо "пользователи"), то вам нужно использовать что-то вроде:
$persondata = $session->read('Auth.Person');
4 answers
На самом деле эта информация легко доступна из сеанса. Вы используете помощника сеанса, чтобы захватить его. Я считаю, что правильный синтаксис:
$userdata = $session->read('Auth.User');
$username = $session->read('Auth.User.username');
ИЗМЕНИТЬ:
Для CakePHP 2.X и по синтаксису:
$userdata = $this->session->read('Auth.User');
$username = $this->session->read('Auth.User.username');
Проверьте методы AuthComponent в руководстве CakePHP....
Вы можете получить доступ к информации о пользователе после того, как пользователь вошел в систему из сеанса с помощью $this->Auth->User(). Поэтому, если вам нужно имя пользователя, просто используйте его в контроллере.
$это->набор ('имя пользователя', $это->Авторизация->Пользователь ('имя пользователя'));
Теперь вы можете использовать $username в представлении.
Добавьте метод в свой AppController
function beforeFilter() {
$ath = $this->Auth->user();
$this->set('userDetails', $ath['User']);
}
И затем вы можете получить к нему доступ из своих представлений и/или макетов через $UserDetails