使用Cwebuser验证登录后生成的session的规则是什么?

在后台里用户登录后var_dump($_SESSION)后能看到

类似

$_SESSION[‘8a685d7ab24c27da64973a2e32b2e485__name’]= xxx

我想问一下这是怎么得到8a685d7ab24c27da64973a2e32b2e485__name的。

在ckfinder中需要判断用户是不是登录了。 :o

我现在只能这样验证是否登录,而不能直接根据session来判断。




function CheckAuthentication()


{


	//WARNING : DO NOT simply return "true". By doing so, you are allowing


	//"anyone" to upload and list the files in your server. You must implement


	//some kind of session validation here. Even something very simple as...





	// return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];


	//... where $_SESSION['IsAuthorized'] is set to "true" as soon as the


	//user logs in your system.


	$yii=dirname(dirname(__FILE__)).'/../yii1.1/framework/yii.php';

	$config=dirname(dirname(__FILE__)).'/protected/admin/config/main.php';

	require_once($yii);

	Yii::createWebApplication($config);

	return !Yii::app()->user->isGuest;




	return false;


}



你可以配置CWebUser.stateKeyPrefix=‘xxx’, 这样session key就成了xxx__name了。

能否将 keyprifix放到 user配置中进行配置?

因为不知道该在什么地方进行 setStateKeyPrifix 具有全面的全局性~

当然。配置文件配置的就是各种对象的属性。

在 CWebUser 里面 找到 private $_keyPrefix;

配置:




'user' => array(

    'class'=>'CWebUser',

    'allowAutoLogin' => false,

    //'identityCookie' => array(??),

    'loginUrl' => array('passport/login'),

    'guestName' => Yii::t('global', 'Guest'),

    'stateKeyPrefix' => '~anything~', <--- 原来真的有效

),

之前看到是 private~就没有测试

是否 Yii的所有类,都会继承 getXxx() 和 setXxx() 这样的接口? ::)

这是因为CWebUser定义了setStateKeyPrefix函数,所以"stateKeyPrefix"自动成了一个可写属性。这是CComponent提供的支持。

OK,谢谢qiang。

:lol: 一直以为那个XXX是由类似md5(stateKeyPrefix+‘123456’)得到的。