web-dev-qa-db-ja.com

Cakephp-認証を使用するときにコントローラーでユーザーIDを取得する

これを取得するには2ステップのプロセスのようですが、

    $u = $this->Auth->user();
    $uid = $u['User']['id'];

ユーザーがログインしたら、どこかに変数が設定されていませんか? (馬鹿げた質問で申し訳ありません。)

17
Owen

私はあなたができると思います$uid = $this->Auth->user('id');-APIをチェックします: http://api.cakephp.org/class/auth-component#method-AuthComponentuser

32
Leo

CakePHPでは、セッションからユーザーIDを取得する方法がいくつかあります。いくつか例を示します。

コントローラー内のセッションユーザーIDを取得するには、次を使用します:

$uid = $this->Auth->User('user_id');

ビュー内のセッションユーザーIDを取得するには、次を使用します:(非推奨、コントローラーでこれを設定します)

$uid = $this->Session->read('Auth.User.id');

モデル内のセッションユーザーIDを取得するには、次を使用します:(非推奨ですが、解決策です)

$uid = CakeSession::read('Auth.User.id');

モデル内からセッションユーザーIDを取得するために上記をお勧めしません。コントローラーを介して渡します。次を使用します:

$this->Model->function($uid);

また、純粋なphpを介してセッションユーザーIDを取得できます。以下を使用します(Cakeを使用する場合は、慣例に従う必要があります)

$uid = $_SESSION['Auth']['User']['id'];

そして、より多くのアプローチがあります、これはほんの一部です...

17
Brett Stewart

これを試して:

$this->Auth->user('id')
10
santiagobasulto

Authクラスを使用できない場合は、セッションからユーザーの詳細を取得することもできます。

$this->Session->read('Auth.User.id')
5
472084

CakePhp 2.x:

どこでも:

AuthComponent::user('id')

コントローラーの内部:

$this->Auth->user('id');
5
Ankan-Zerob

$this->Sessionは非推奨です

このようなものを使う

$session = $this->request->session();
$user_id = $session->read('Auth.User.id');
0
Simon

これは役に立たないかもしれませんが、$this->Auth->user();によってエラーの原因がありました。代わりにこれを使用してこの問題を解決しました。問題のルートはわかりませんが、$this->Auth->user();を使用したのと同じアクションでモデルから関数を呼び出すときに発生しました。AuthComponent::user('id')を使用して問題を解決しました。

0
AlbertMarkovski