Yii如何实现前后台的session分离
From: http://www.cnblogs.com/davidhhuan/archive/2013/05/04/3060425.html
Yii Framework实现前后台frontend,backend分离的方法有几种,总结如下:
1. 分开入口文件
目录结构
index.php
admin.php
assets/
...其它目录
protected/
config/
main.php
components/
controllers/
...其它目录
admin/
config/
main.php
components/
controllers/
...其它目录
网站正常的入口文件是index.php,我们加多一个admin.php用来处理后台事务
// index.php:
require('path/to/yii.php');
Yii::app()->createWebApplication('protected/config/main.php')->run();
// admin.php:
require('path/to/yii.php');
Yii::app()->createWebApplication('protected/admin/config/main.php')->run();
protected/admin/config/main.php的代码如下
$backend = dirname(dirname(__FILE__));
$frontend = dirname($backend);
Yii::setPathOfAlias('backend', $backend);
$frontendArray = require($frontend.'/config/main.php');
$backendArray = array(
'name'=>'网站后台管理系统',
'basePath' => $frontend,
'controllerPath' => $backend.'/controllers',
'viewPath' => $backend.'/views',
'runtimePath' => $backend.'/runtime',
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.*',
'application.extensions.nestedset.*',
'backend.models.*',
'backend.components.*',
),
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
),
),
// main is the default layout
//'layout'=>'main',
// alternate layoutPath
'layoutPath'=>dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'layouts'.DIRECTORY_SEPARATOR,
);
return CMap::mergeArray($frontendArray, $backendArray);
2. 后台admin作为一个module存在
目录结构如下
protected/
commands/
components/
...其它目录
modules/
admin/
assets/
components/
controllers/
...其它目录
可以通过设置user这个组件来实现前后台的session id分开
protected/modules/admin/AdminModule.php
public function init()
{
//...其它代码
Yii::app()->setComponents(
array(
//...其它组件设置代码
'user' => array(
'stateKeyPrefix' => '__admin__',//设置session前缀,以分开不同module
),
));
}
3. 使用架构分离
其实这个跟第一种方法类似,目录结构如下
backend/
components/
config/
environments/
main-private.php *
main-prod.php
params-private.php *
params-prod.php
main-env.php *
main-local.php *
main.php
params-env.php *
params-local.php *
params.php
test.php
controllers/
SiteController.php
...
extensions/
behaviors/
validators/
lib/
models/
FormModel.php
...
modules/
runtime/ *
views/
layouts/
site/
widgets/
www/
assets/ *
css/
images/
js/
themes/
index.php
.htaccess
common/
components/
config/
environments/
params-private.php *
params-prod.php
params-env.php *
params-local.php *
params.php
data/
extensions/
behaviors/
validators/
lib/
Behat/
Pear/
Yii/
Zend/
messages/
models/
widgets/
console/
commands/
components/
config/
environments/
lib/
migrations/
models/
runtime/ *
yiic.php
frontend/
components/
config/
environments/
main-private.php *
main-prod.php
params-private.php *
params-prod.php
main-env.php *
main-local.php
main.php
params-env.php *
params-local.php *
params.php
test.php
controllers/
extensions/
behaviors/
validators/
lib/
models/
modules/
runtime/ *
views/
layouts/
site/
www/
assets/ *
css/
files/
images/
js/
less/
index.php
robots.txt
.htaccess
tests/
bootstrap/
FeatureContext.php
YiiContext.php
features/
Startup.feature
behat.yml
INSTALL.md
README.md
runbehat
runpostdeploy
yiic
yiic.bat
github上面有这样一个demo架构,推荐那些有自己服务器的人采用这种架构,具体地址:https://github.com/clevertech/YiiBoilerplate

浙公网安备 33010602011771号