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的代码如下:

Java代码   收藏代码
  1. <?php  
  2. $backend = dirname(dirname(__FILE__));  
  3. $frontend = dirname($backend);  
  4. Yii::setPathOfAlias('backend',$backend);  
  5.   
  6. $frontendArray = require_once($frontend.'/config/main.php');  
  7.   
  8. $backendArray=array(  
  9.     'name'=>'网站后台管理系统',  
  10.     'basePath'=>$frontend,  
  11.     'viewPath'=>$backend.'/views',  
  12.     'controllerPath'=>$backend.'/controllers',  
  13.     'runtimePath'=>$backend.'/runtime',  
  14.     'import'=>array(   
  15.         'application.models.*',  
  16.         'application.components.*',  
  17.         'backend.models.*',  
  18.         'backend.components.*',  
  19.     ),  
  20.     //'params'=>CMap::mergeArray(require($frontend.'/config/params.php'),require($backend.'/config/params.php')),  
  21. );  
  22. if(isset($frontendArray['components']['user']))unset($frontendArray['components']['user'])  
  23. return CMap::mergeArray($frontendArray,$backendArray);   

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

Java代码   收藏代码
  1. >yiic shell path/to/site/admin.php  
  2. >model Article  
  3. >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了

Java代码   收藏代码
  1. Yii::app()->user->logout(false);  

main.php

前台user(Cwebuser)的配置: UserIdentity

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

后台user(Cwebuser)的配置: AdminIdentity

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

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

相关文章
|
5月前
|
XML Java 数据库连接
MyBatis Plus 核心功能与用法
MyBatis Plus 是基于 MyBatis 的增强工具,简化单表 CRUD 操作。通过继承 BaseMapper 即可实现增删改查,支持条件构造器、分页、逻辑删除、自动填充、乐观锁等高级功能,大幅提升开发效率,无需编写冗余 SQL 与 XML,助力快速构建 Spring Boot 应用。
481 0
|
10月前
小红书无限私信群发工具,小红书私信脚本插件,导入ID关注收藏评论留言
这是一款针对小红书平台开发的私信群发软件,可突破官方私信数量限制。通过这款插件,用户能够自由发送超过官方限制数量的私信
|
12月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据归档
本文介绍了Oracle闪回数据归档(Flashback Data Archive)的功能与实现方法。闪回数据归档可将表中的历史数据进行归档,支持全面的历史数据查询,引入了“Oracle Total Recall”概念。文中通过具体实战步骤演示了如何创建和启用闪回数据归档:包括创建表空间、数据归档,设置默认归档,授予用户权限,开启表的归档功能,并展示了误操作后如何通过归档恢复数据。最后通过执行计划验证了数据来源于归档。
314 4
|
NoSQL Redis
Redis的数据持久化策略有哪些 ?
Redis 提供了两种方式,实现数据的持久化到硬盘。 1. RDB 持久化(全量),是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2. AOF持久化(增量),以日志的形式记录服务器所处理的每一个写、删除操作 RDB和AOF一起使用, 在Redis4.0版本支持混合持久化方式 ( 设置 aof-use-rdb-preamble yes )
|
存储 SQL 关系型数据库
关系型数据库存储优化
关系型数据库存储优化
330 1
|
机器人 Shell Python
ROS2教程05 ROS2服务
这篇文章是关于ROS2(Robot Operating System 2)服务的教程,涵盖了服务的概念、特性、命令行工具的使用,以及如何编写服务的服务器和客户端代码,并提供了测试服务通信机制的示例。
660 4
ROS2教程05 ROS2服务
|
存储 IDE 开发工具
Python中变量命名规则
【8月更文挑战第5天】
972 4
|
SQL 数据采集 监控
14个Flink SQL性能优化实践分享
本文档详细列举了Apache Flink SQL的性能调优策略。主要关注点包括:增加数据源读取并行度、优化状态管理(如使用RocksDB状态后端并设置清理策略)、调整窗口操作以减少延迟、避免类型转换和不合理的JOIN操作、使用广播JOIN、注意SQL查询复杂度、控制并发度和资源调度、自定义源码实现、执行计划分析、异常检测与恢复、监控报警、数据预处理与清洗、利用高级特性(如容器化部署和UDF)以及数据压缩与序列化。此外,文档还强调了任务并行化、网络传输优化、系统配置调优、数据倾斜处理和任务调度策略。通过这些方法,可以有效解决性能问题,提升Flink SQL的运行效率。
749 5
|
算法 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
1549 1