2009-05-30 35 views
7

Theo cakebook section on the Auth component, tôi có thể thực hiện thẩm định đơn giản bằng cách sử dụng những người sử dụng điều khiển sau:Có cách nào dễ dàng để lấy dữ liệu người dùng AuthComponent từ một khung nhìn trong CakePHP không?

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

Tôi muốn để có thể giống như sau vào quan điểm của tôi:

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

Is có một cách đơn giản để làm điều này, hoặc tôi cần phải ghi đè lên chức năng đăng nhập và lưu trữ tên người dùng vào phiên?

Cập nhật

Alexander's answer là chính xác những gì tôi muốn. Tuy nhiên, tôi sẽ thêm những điều sau đây trong trường hợp người khác bị nhầm lẫn như tôi đã làm.

Tôi đã mất một thời gian để hiểu rằng nếu bạn thay đổi mô hình sử dụng Auth (ví dụ, bạn có thể có một bảng 'người' thay vì 'người'), sau đó bạn cần phải sử dụng một cái gì đó như:

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

Trả lời

12

Thực ra thông tin này là dễ dàng có sẵn trong phiên làm việc. Bạn sử dụng trình trợ giúp phiên để lấy nó. Tôi tin cú pháp đúng là:

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

EDIT:

Đối với CakePHP 2.x và về cú pháp là:

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

Cảm ơn bạn. Điều này thật đúng với gì mà tôi đã tìm kiếm. –

+0

Bạn nên sử dụng cú pháp này trong CakePHP 2.x $ userdata = $ this-> session-> read ('Auth.User'); $ username = $ this-> session-> read ('Auth.User.username'); – vinzcelavi

+0

Lưu ý: ít nhất trong CakePHp 2.7 không hoạt động, nó phải là $ this-> Session .... Các s trong phiên phải là chữ hoa –

3

Check-out AuthComponent-phương pháp trong cuốn hướng dẫn CakePHP ....

Bạn có thể truy cập vào một thông tin người dùng sau khi người dùng đã đăng nhập từ phiên giao dịch qua $ this-> Auth-> người dùng(). Vì vậy, nếu bạn muốn tên người dùng, chỉ cần sử dụng điều này trong bộ điều khiển.

$ this-> set ('username', $ this-> Auth-> User ('username'));

Bây giờ bạn có thể sử dụng tên người dùng $ trong chế độ xem.

2

Thêm một phương pháp trong AppController bạn

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

Và sau đó bạn có thể truy cập nó từ quan điểm và/hoặc bố trí của bạn thông qua $ userDetails

0

Để truy cập Auth vars trong quan điểm chỉ làm điều đó:

 
echo $session->read('Auth.User.id'); 
Các vấn đề liên quan