2009-05-30 10 views
7

Według cakebook section on the Auth component mogę realizować proste uwierzytelnianie za pomocą następującego kontroler użytkownicy:Czy istnieje prosty sposób na uzyskanie danych użytkownika AuthComponent z widoku w CakePHP?

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()); 
    } 
} 

Chciałbym móc coś jak następuje w moim zdaniem:

<?php 
    $username = $auth->user('username'); 
    echo "Welcome " . $username; 
?> 

Is istnieje prosty sposób, aby to zrobić, czy muszę nadpisać funkcję logowania i zapisać nazwę użytkownika w sesji?

Aktualizacja

Alexander's answer jest dokładnie to, co chciałem. Dodam jednak, na wypadek, gdyby ktoś wpadł w zakłopotanie, tak jak ja.

Zajęło mi trochę czasu, aby zrozumieć, że jeśli zmieni się model, który używa uwierzytelniania (na przykład, może mieć tabeli „Osoby” zamiast „Użytkownicy”), to trzeba użyć czegoś takiego:

$persondata = $session->read('Auth.Person'); 

Odpowiedz

12

Właściwie ta informacja jest łatwo dostępny z sesji. Używasz pomocnika sesji, aby go pobrać. Wierzę, że poprawna składnia jest następująca:

$userdata = $session->read('Auth.User'); 
$username = $session->read('Auth.User.username'); 

EDIT:

Dla CakePHP 2.X i składnia jest:

$userdata = $this->session->read('Auth.User'); 
$username = $this->session->read('Auth.User.username'); 
+0

Dziękuję. Właśnie tego szukałem. –

+0

Powinieneś użyć tej składni w CakePHP 2.x $ userdata = $ this-> session-> read ('Auth.User'); $ username = $ this-> session-> read ('Auth.User.username'); – vinzcelavi

+0

Uwaga: przynajmniej w Cakephp 2.7 nie działa, musi to być $ this-> Sesja .... S w sesji musi być wielkimi literami –

3

Wyjazd AuthComponent-Methods in podręcznika CakePHP ....

można uzyskać dostęp do informacji o użytkowniku, gdy użytkownik jest zalogowany z sesji poprzez $ this-> Auth-> użytkownik(). Więc jeśli chcesz nazwę użytkownika, po prostu użyj tego w kontrolerze.

$ this-> set ("nazwa użytkownika", $ this-> Auth-> User ("username"));

Możesz teraz użyć $ username w widoku.

2

Dodaj metodę w swojej AppController

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

a następnie można uzyskać do niego dostęp od swoich poglądów i/lub układów poprzez $ userDetails

0

Aby uzyskać dostęp Auth vars w widokach po prostu to zrobić:

 
echo $session->read('Auth.User.id');