yii 前后台分离及登陆验证

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


比较合理的做法其实是分成两个框架来布署;然而这样说法也太绝对。

事实上是针对不同系统,应采用不同的方法。如为CMS系统,则不需很复杂的权限管理,但如果有管理员与会员之分,系统又有很多设置操作,则需要前后台分离,并设置相应的权限管理。


大型的系统或是为安全因素考虑,则是布署成两个目录。


但一般的小型应用则不需要这样。

按照官方的cookebook有两种方法可选:一是modules,二是两个config。

modules的方法可参照boylee的教程,google yiigo即可。

这里是参照第二种方法来做的。

论坛上有人建议做一个主config.php然后使用CMap::mergeArray()将两个配置文件合并,好处是省事,配置方便。

但通常,前后台各有其配置。我这里采用了官方的方法,即前后台各使一个config,并不合并。便宜之处是前后台皆可使用gii(gii是yii的一大特色,工欲善其事,必先利其器,如果丢掉这么好的工具不用,有些可惜),另外便于操作,即便是新手也很容易配置。

现在将实现方法向大家汇报如下:

具体实现步骤:


一,建立入口

首先使用yiic 建立项目;其次,修改webroot 下的index-test.php,将其命名为admin.php(根据项目改名,此处只举例而已,不要认真,认真你就输了)。

修改admin.php

[php] view plaincopyprint?

  1. /** 

  2.                               * This is the bootstrap file for test application. 

  3.                               * This file should be removed when the application is deployed for production. 

  4.                               */  

  5.   

  6. // change the following paths if necessary  

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

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

  9.   

  10. // remove the following line when in production mode  

  11. defined('YII_DEBUG'or define('YII_DEBUG',true);  

  12.   

  13. require_once($yii);  

  14. Yii::createWebApplication($config)->run();  


ps:因为我将yii移到了项目之外,所以配置请以具体环境为准,此例仅做参照。

二、建立配置文件

在protected目录下建立admin目录,然后将protected下的config里的main.pphp拷贝过来;在admin目录依次建立controllers,models,views目录;然后将protected下的site相关目录考贝过来,放在相应层次。参考主目录结构建立如下:

[html] view plaincopyprint?

  1. admin  

  2. |-- config  

  3. |   `-- main.php  

  4. |-- controllers  

  5. |   `-- SiteController.php  

  6. |-- models  

  7. |   |-- ContactForm.php  

  8. |   |-- LoginForm.php  

  9. |   `-- Operator.php  

  10. |-- runtime  

  11. |   |--  

  12. `-- views  

  13. |-- layouts  

  14. |   |-- column1.php  

  15. |   |-- column2.php  

  16. |   `-- main.php  

  17. `-- site  

  18. |-- contact.php  

  19. |-- error.php  

  20. |-- index.php  

  21. |-- login.php  

  22. `-- pages  

  23. `-- about.php  


ps:对于类linux系统请不要忘记修改相应的目录、文件权限。

三、修改配置admin/config/main.php参考如下:

[php] view plaincopyprint?

  1. <?php  

  2.   

  3. // 这里使用了一个扩展,故定义了一个别名  

  4. Yii::setPathOfAlias('ext', dirname(__FILE__).'/../extensions');  

  5. // 下面是分离前后台需要增加的  

  6. $backend=dirname(dirname(__FILE__));  

  7. $frontend=dirname($backend);  

  8. Yii::setPathOfAlias('backend'$backend);  

  9.   

  10. // 下面是通用配置  

  11. return array(  

  12.         <span style="color:#ff6666;">//  着重注意修改的地方  

  13.         'basePath' => $frontend,  

  14.         'controllerPath' => $backend.'/controllers',  

  15.         'viewPath' => $backend.'/views',  

  16.         'runtimePath' => $backend.'/runtime',</span>  

  17.         'name'=>'后台管理程序',  

  18.   

  19.         // preloading 'log' component  

  20.         'preload'=>array('log'),  

  21.   

  22.         // autoloading model and component classes  

  23.         'import'=>array(  

  24.             'application.models.*',  

  25.             'application.components.*',  

  26.             <span style="color:#ff6666;"//  着重注意修改的地方  

  27.             'backend.models.*',  

  28.             'backend.components.*',</span>  

  29.             'ext.*',ext),  

  30.   

  31.         'modules'=>array(  

  32.             //  Gii tool  

  33.             'gii'=>array(  

  34.                 'class'=>'system.gii.GiiModule',  

  35.                 'password'=>'password',  

  36.                 'generatorPaths'=>array(  

  37.                     'ext.dwz.gii.module.templates.dwz.module',  

  38.                     ),   

  39.                 // If removed, Gii defaults to localhost only. Edit carefully to taste.  

  40.                 'ipFilters'=>array('127.0.0.1','::1'),  

  41.                 ),  

  42.   

  43.             ),  

  44.   

  45.         // application components  

  46.         'components'=>array(  

  47.                 'user'=>array(  

  48.                     // enable cookie-based authentication  

  49.                     'allowAutoLogin'=>true,  

  50.                     ),  

  51.                 // uncomment the following to enable URLs in path-format  

  52.                 /* 

  53.                    'urlManager'=>array( 

  54.                    'urlFormat'=>'path', 

  55.                    'rules'=>array( 

  56.                    '<controller:\w+>/<id:\d+>'=>'<controller>/view', 

  57.                    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 

  58.                    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 

  59.                    ), 

  60.                    ), 

  61.                  */  

  62.   

  63.                 //   MySQL database  

  64.   

  65.                 'db'=>array(  

  66.                     'connectionString' => 'mysql:host=localhost;dbname=dbname',  

  67.                     'emulatePrepare' => true,  

  68.                     'username' => 'root',  

  69.                     'password' => '',  

  70.                     'charset' => 'utf8',  

  71.                     ),  

  72.   

  73.                 'errorHandler'=>array(  

  74.                         // use 'site/error' action to display errors  

  75.                         'errorAction'=>'site/error',  

  76.                         ),  

  77.                 'log'=>array(  

  78.                         'class'=>'CLogRouter',  

  79.                         'routes'=>array(  

  80.                             array(  

  81.                                 'class'=>'CFileLogRoute',  

  82.                                 'levels'=>'error, warning',  

  83.                                 ),  

  84.                             // uncomment the following to show log messages on web pages  

  85.                             array(  

  86.                                 'class'=>'CWebLogRoute',  

  87.                                 ),  

  88.                             ),  

  89.                         ),  

  90.                 ),  

  91.   

  92.                 // application-level parameters that can be accessed  

  93.                 // using Yii::app()->params['paramName']  

  94.                 'params'=>array(  

  95.                         // this is used in contact page  

  96.                         'adminEmail'=>'webmaster@example.com',  

  97.                         'loginType'=>'',  

  98.                         ),  

  99.                 );  


ps:请不要照抄,跟据实际情况调整,另注意web页面的转义。另,注意着重修改的地方。

四、生成后台model

因为import里导入了前后台的models因此,在后台可以使用前后台所有models。

下面利用yii神器GII,http://domain/admin.php?r=gii/model

请注意下图:


这里可以选择要生成的models的位置,默认的是applications.models。其实,一个gii也可以生成前后台models但用起来稍闲麻烦。

五、实现前后台登陆

验证部分不说了,修改UserIdentity.php和用户模型。具体可参考这里

主要的是在config/main.php里的params里增加了‘logintype’参数,用于标识登陆用户类型。这里是急中生智的办法,希望大侠们提出更好的方法。


汇报完毕。坐等挨喷。




转载于:https://my.oschina.net/yonghan/blog/533174

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kibana

2019独角兽企业重金招聘Python工程师标准>>> Kibana是一个基于浏览器页面的Elasticsearch前端展示工具。Kibana全部使用HTML语言和Javascript编写的&#xff0c;查询语法是基于Lucene的查询语法。允许布尔运算符、通配符和字段筛选。注意关键字要大写 全文搜索 在搜…

电脑QQ能登上,网页打不开的解决办法

打开360卫士&#xff0c;在功能大全里选择网络优化&#xff0c;断网急救箱。 可以看到DNS服务异常、浏览器配置异常&#xff0c;点击立即修复。

个人黑名单 抄袭耻辱墙

抄袭耻辱墙 博主抄袭文原文我爱Python数据挖掘https://blog.csdn.net/weixin_38037405/article/details/125862095https://blog.csdn.net/A757291228/article/details/117464313黄埔数据分析https://blog.csdn.net/weixin_39060517/article/details/118024847https://blog.csdn…

快速掌握 ASP.NET 身份认证框架 Identity(一)

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事ASP.NET Core 内置了一个强大的身份认证框架 Identity&#xff0c;掌握它可以让我们快速开发高安全的身份认证功能&#xff0c;不仅如此&#xff0c;它还是一个基于数据库的用户管理系统&#xff0c;其中包含了大量的辅助…

浅谈大型web系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。   大型动态应用…

PHP: 手把手编写自己的 MVC 框架实例教程

1 什么是MVC MVC模式&#xff08;Model-View-Controller&#xff09;是软件工程中的一种软件架构模式&#xff0c;把软件系统分为三个基本部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。 …

2021年复盘总结发现了C站博主缺少的赚钱之路

一、 我2021年的六大Flag 其实最开始我是不打算年终总结的&#xff0c;因为2021年我的十大Flag都没有完成&#xff0c;我说出来可能你会嘲笑我&#xff0c;所以我打算还是说出来吧。 这六大Flag如下&#xff1a; C站百万粉百篇实战文其他自媒体平台十万粉公众号一万粉财务自…

五大微信小程序开发IDE深度评测

微信小程序已经内测有一段时间了&#xff0c;笔者本着好奇加学习的心态写了几个小demo&#xff0c;虽然在MINA框架上并没有遇到太多的坑&#xff0c;但官方开发工具实在不敢恭维。 api提示不全&#xff0c;要一个个查api啊&#xff0c;写代码超级慢啊 很多必备的快捷键都没有&…

Maui的学习之路(2)--Mac窗体设置

Maui的学习之路今天是我开启Maui学习之路的第二天&#xff0c;我不是很高兴又能水一篇文章&#xff0c;我只能说这文章真好水。话不多说&#xff0c;我们进入正题&#xff0c;昨天解决了Windows下TitleBar以及窗体大小的问题&#xff0c;今天同样的问题&#xff0c;在Mac上又要…

ArcGIS10.8中如何获取线状、面状数据的折点,并计算折点坐标?

如下图所示为面状要素,ArcGIS10.8中如何获取线状和面状数据的折点(起点、终点、中点、端点),并计算折点的坐标(X,Y,Z,M)? 下图所示为线状(Polyline)和面状(Polygon)要素的起点、终点和折点的示意图。

[转]Cordova + Ionic in Visual Studio - 101 Tutorial [Part I]

本文转自&#xff1a;http://binarylies.ghost.io/cordova-ionic-in-visual-studio/ Hi everyone, I thought about lending a hand to all the people that are, as I have been recently, exploring Cordova and all its features for the first time. For the ones still tr…

【转】学会这13个原则写UI界面文案,用户才能秒懂

原文网址&#xff1a;http://www.niaogebiji.com/article-12011-1.html 摘要: 首先&#xff0c;在写UI文案之前&#xff0c;为了理清思路&#xff0c;要先搞清楚三个问题&#xff1a;我&#xff08;设计师&#xff09;想让用户做什么&#xff1f; – 我写文案的目的为什么要让用…

【前端就业课 第一阶段】HTML5 零基础到实战(一)基础代码结构详解

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

【框架篇】mvc、mvp、mvvm使用关系总结

MVC MVC全名是Model View Controller&#xff0c;是模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)的缩写&#xff0c;一种软件设计典范&#xff0c;用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c…

Android之使用自定义华为扫描SDK扫描二维码和识别本地图片

1、需求 更具UI的设计实现扫描二维码和识别本地图片二维码功能。 zxing扫描二维码还可以,但是识别本地图片二维码功能效果太差,非常不理想,看了看多github很多zxing扩展的开源项目,识别本地图片二维码功能效果不乐观,有些甚至还有裁剪本地图片,还是不能识别,果断放弃zb…

Matlab R2016b简体中文版安装教程(附Matlab R2016b百度网盘下载地址)

下载的Matlab R2016b软件安装包(文末附有下载地址)目录如下所示: 安装过程: 1. 安装主程序R2016b_win64_dvd1.iso和R2016b_win64_dvd2.iso 由于目前大多数及其都是Win8或10系统,所以选中R2016b_win64_dvd1.iso,右键→Windows资源管理器打开。Win7系统可以安装好压软件之后…

深度学习String、StringBuffer、StringBuilder

相信String这个类是Java中使用得最频繁的类之一&#xff0c;并且又是各大公司面试喜欢问到的地方&#xff0c;今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类&#xff0c;分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲&#xff1a…

MySQL5.5多实例编译安装——mysqld_multi

一、MySQL多实例简介 MySQL多实例&#xff0c;简单地说&#xff0c;就是在一台服务器上同时开启多个不同的服务端口&#xff08;如&#xff1a;3306、3307&#xff09;&#xff0c;同时运行多个MySQL服务进程&#xff0c;这些服务进程通过不同的socket监听来自不同的端口来提供…

【前端就业课 第一阶段】HTML5 零基础到实战(二)超链接

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

C语言,C#语言求100-999内的水仙花数源程序

水仙花数&#xff08;Narcissistic number&#xff09;也被称为超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数&#xff08;Armstrong number&#xff09;&#xff0c;水仙花数是指一个 3 位数&#…