Yii 前后台分离 demo

1.首先我把目录结构写下来:

    wwwroot/

        htdocs  //webroot目录,方便资源文件,和程序文件做Linux权限控制

             index.php
             admin.php 
             assets/
             images/
        protected/
            config/
                main.php
            components/
            controllers/
            models/
            views/
            runtime/

       admin /
            config/
                main.php
            components/
            controllers/
            views/
           runtime/

1.新建admin的目录结构,注意后台必须保留main.php defaultController中的controller文件和defaultAction对应的view文件 ,如siteController.php view/site/index.php

 

2.前后台引导文件分别如下,复制index.php改名为admin.php并修改
Yii::app()->createWebApplication('protected/admin/config/main.php')->run();

 

3.protected/admin/config/main.php的代码如下:

<?php
$backend = dirname(dirname(__FILE__));
$frontend = dirname($backend);
Yii::setPathOfAlias('backend',$backend);

$frontendArray = require_once($frontend.'/config/main.php');

$backendArray=array(
	'name'=>'网站后台管理系统',
	'basePath'=>$frontend,
    'viewPath'=>$backend.'/views',
	'controllerPath'=>$backend.'/controllers',
    'runtimePath'=>$backend.'/runtime',
	'import'=>array(	
		'application.models.*',
		'application.components.*',
	    'backend.models.*',
		'backend.components.*',
	),
	//'params'=>CMap::mergeArray(require($frontend.'/config/params.php'),require($backend.'/config/params.php')),
);
if(isset($frontendArray['components']['user']))unset($frontendArray['components']['user'])
return CMap::mergeArray($frontendArray,$backendArray); 

这里我们的model是公用的 ,controller和view,runtime是分开的,我们还可以通过命令行对后台进行model和crud,方法如下:

>yiic shell path/to/site/admin.php
>model Article
>crud Article

这样后台对应的controller和view就生成了!
如果只对后台的变量进行配置的话,只需要修改protected/admin下的配置文件就可以了!

后台配置文件与前台配置文件进行数组合并,没有的项自动包含,相同项则将其覆盖 ,例如后台中可使用 'name'=>'网站后台管理系统'仍为自己,是将前台覆盖的结果

 

前后台分离:前台入口index.php,后台是admin.php。后台可以重用前台,module那个更像是子项目,这个前后台两个像并行的.访问www.test.com/admin.php检测后台配置文件是否正确

 

Yii中处理前后台登录

如果有前台会员登陆和后台管理员登陆分离的需求,则需要为前台和后台的登陆定制两套不同的验证机制,主要是通过定义不同的Session来实现。要解决这个问题就要将前后台使用不同的Cwebuser实例登录。这样就已经做到了前后台登录分离开了,但是此时你退出的话你就会发现前后台一起退出了。于是我找到了logout()这个方法,发现他有一个参数$destroySession=true,原来如此,如果你只是logout()的话那就会将session全部注销,加一个false参数的话就只会注销当前登录实例的session了

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

main.php

前台user(Cwebuser)的配置: UserIdentity

'user'=>array(
    'class'=>'WebUser',//这个WebUser是继承CwebUser,稍后给出它的代码
    'stateKeyPrefix'=>'member',//这个是设置前台session的前缀
    'allowAutoLogin'=>true,//这里设置允许cookie保存登录信息,一边下次自动登录
),

后台user(Cwebuser)的配置: AdminIdentity

'admin' => array(
    'class' => 'AdminWebUser', //后台登录类实例
    'stateKeyPrefix' => 'admin', //后台session前缀
    "guestName" => "游客"
),
Yii::app()->user//前台访问用户信息方法
Yii::app()->admin//后台访问用户信息方法
Yii::app()->admin->login($this->_identity,$duration);

http://hudeyong926.iteye.com/blog/1338494

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值