在Yii framework

时间:2016-08-17 10:21:13

标签: yii

我是Yii框架的新手,我想获取当前登录用户的用户详细信息,例如userid,username&他的头像,并希望在head标签中添加该数据。我在Yii上使用基本版本。

我如何获得这些详细信息?

2 个答案:

答案 0 :(得分:0)

Yii使用IdentityInterface处理会话中的用户数据。 让我们一步一步走。

您可以创建一个类,称之为User,它实现IdentityInterface。如果与数据库连接,您可以将其扩展到ActiveRecord,完全取决于您的架构。

class User extends ActiveRecord implements IdentityInterface
{
    ...
}

将配置详细信息添加到配置文件main.php中。我在高级模板上工作,因此它位于fronted / config。检查它是否为基本的。

'components' => [
    ...

    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
    ],

    ....
];

这告诉应用程序从公共\ model \ User类获取用户会话详细信息。它的共同之处在于我对后端和前端使用相同的类,而基本模板则不然。

让用户登录应用

当您获得User类的对象时,使用有效的用户名和密码,请使用以下代码登录用户。

Yii::$app->user->login($user);

获取您拥有以下样本

的用户的值

Yii :: $ app-> user-> isGuest - 这会告诉您用户是否已登录。

Yii :: $ app-> user-> id - 获取用户的ID

Yii :: $ app-> user-> identity-> name - Yii::$app->user->identity将允许您访问User类的整个对象。如果您有任何其他属性,请使用标识并获取它们。例如,你可以拥有存储头像网址的“头像”,你可以通过Yii::$app->user->identity->avatar获得它。

最后注销

Yii::$app->user->logout();

答案 1 :(得分:-1)

嗨使用setState方法。

UserIdentity.php

public function authenticate()
{
    $user=User::model()->find('LOWER(username)=?',array(strtolower($this->username)));
    if($user===null)
        $this->errorCode=self::ERROR_USERNAME_INVALID;
    else if(!$user->validatePassword($this->password))
        $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else
    {
        $this->_id=$user->id;
        $this->username=$user->username;
        $this->setState("userid",$user->user_id);// set States like this
        $this->setState("username",$user->username);
        $this->setState("avatar",$user->avatar );
        $this->errorCode=self::ERROR_NONE;
    }
    return $this->errorCode;
}

现在可以在任何地方获得这些

$userid = Yii::app()->user->getState('userid');