好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

在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来访问我们添加的新数据了。

查看更多关于YII学习笔记-登录后的session的总结的详细内容...

  阅读:40次

上一篇: yii 操作session

下一篇:yii 标签用法(模板)