网站地图    收藏   

主页 > 后端 > yii教程 >

YII学习笔记-登录后的session的总结

来源:未知    时间:2014-12-14 00:32 作者:xxadmin 阅读:

[导读] 在YII框架的默认的登录后的session数据是id,name,__states这三个数据。 在搭配好YII框架环境后,可以使用admin/admin,来登录系统。如果在protected/views/layouts/main.php代码中嵌套一个这样的语...

在YII框架的默认的登录后的session数据是id,name,__states这三个数据。

在搭配好YII框架环境后,可以使用admin/admin,来登录系统。如果在protected/views/layouts/main.php代码中嵌套一个这样的语句

<?php
    session_start();
    print_r($_SESSION);
?>

就会显示

Array ( [85cd7ad9d44e5587f655722c60fd3dd9__id] => admin [85cd7ad9d44e5587f655722c60fd3dd9__name] => admin [85cd7ad9d44e5587f655722c60fd3dd9__states] => Array ( ) )

这样的数据

你会发现id和那么的数据都是admin,也就是说,其实yii就只为我们提供了一个用户名就作为用户凭证。我们更多的时候需要用session来记录更多的用户凭证,比如都用户的权限等。

首先我们来试着修改id这样数据。

首先你可以提供我们登录的的login在模型LoginForm.php中。

public function login()
    {
        if($this->_identity===null)
        {
            $this->_identity=new UserIdentity($this->username,$this->password);
            $this->_identity->authenticate();
        }
        if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
        {
            $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
            Yii::app()->user->login($this->_identity,$duration);
            return true;
        }
        else
            return false;
    }

我们最好不要改动framework文件的内容。所以我们改动传进去的数据,也就是UserIdentity这个类。

为什么id和name都是admin,因为在类UserIdentity中提供了一个这样的方法

public function getId()
    {
        return $this->username;
    }

我们需要重写这个方法。

然后添加更过的数据,在上面有一个__states这项数据,我们可以在UserIdentity中重写getPersistentStates方法

内容我先随意添加

public function getPersistentStates()
    {
        return array("a"=>"b");
    }
    public function getId() {
            return 10;
        }

新的session将会变为

Array ( [85cd7ad9d44e5587f655722c60fd3dd9__id] => 10 [85cd7ad9d44e5587f655722c60fd3dd9__name] => admin [85cd7ad9d44e5587f655722c60fd3dd9a] => b [85cd7ad9d44e5587f655722c60fd3dd9__states] => Array ( [a] => 1 ) )

然后我们就可以通过Yii::app->user()->a来访问我们添加的新数据了。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论