Есть ли простой способ получить пользовательские данные 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');
Author: Community, 2009-05-30

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');
 12
Author: Alexander Morland, 2013-05-27 15:37:39

Проверьте методы AuthComponent в руководстве CakePHP....

Вы можете получить доступ к информации о пользователе после того, как пользователь вошел в систему из сеанса с помощью $this->Auth->User(). Поэтому, если вам нужно имя пользователя, просто используйте его в контроллере.

$это->набор ('имя пользователя', $это->Авторизация->Пользователь ('имя пользователя'));

Теперь вы можете использовать $username в представлении.

 3
Author: Vince, 2009-05-30 12:53:05

Добавьте метод в свой AppController

function beforeFilter() {
$ath = $this->Auth->user();
$this->set('userDetails', $ath['User']);
}

И затем вы можете получить к нему доступ из своих представлений и/или макетов через $UserDetails

 2
Author: unicorn_crack, 2009-05-30 17:14:59

Чтобы получить доступ к версиям аутентификации в представлениях, просто сделайте это:

echo $session->read('Auth.User.id');
 0
Author: , 2009-05-31 17:14:28