最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

yii 前后台分离及登陆验证

XAMPP下载 admin 745浏览 0评论

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

事实上是针对不同系统,应采用不同的方法。如为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

 

  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. // change the following paths if necessary
  6. $yii=dirname(__FILE__).’/../yii/framework/yii.php’;
  7. $config=dirname(__FILE__).’/protected/admin/config/main.php’;
  8. // remove the following line when in production mode
  9. defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
  10. require_once($yii);
  11. Yii::createWebApplication($config)->run();

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

 

二、建立配置文件

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

 

  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参考如下:

 

  1. <?php
  2. // 这里使用了一个扩展,故定义了一个别名
  3. Yii::setPathOfAlias(‘ext’, dirname(__FILE__).’/../extensions’);
  4. // 下面是分离前后台需要增加的
  5. $backend=dirname(dirname(__FILE__));
  6. $frontend=dirname($backend);
  7. Yii::setPathOfAlias(‘backend’, $backend);
  8. // 下面是通用配置
  9. return array(
  10. // 着重注意修改的地方
  11. ‘basePath’ => $frontend,
  12. ‘controllerPath’ => $backend.’/controllers’,
  13. ‘viewPath’ => $backend.’/views’,
  14. ‘runtimePath’ => $backend.’/runtime’,
  15. ‘name’=>’后台管理程序’,
  16. // preloading ‘log’ component
  17. ‘preload’=>array(‘log’),
  18. // autoloading model and component classes
  19. ‘import’=>array(
  20. ‘application.models.*’,
  21. ‘application.components.*’,
  22. // 着重注意修改的地方
  23. ‘backend.models.*’,
  24. ‘backend.components.*’,
  25. ‘ext.*’,ext),
  26. ‘modules’=>array(
  27. // Gii tool
  28. ‘gii’=>array(
  29. ‘class’=>’system.gii.GiiModule’,
  30. ‘password’=>’password’,
  31. ‘generatorPaths’=>array(
  32. ‘ext.dwz.gii.module.templates.dwz.module’,
  33. ),
  34. // If removed, Gii defaults to localhost only. Edit carefully to taste.
  35. ‘ipFilters’=>array(‘127.0.0.1′,’::1′),
  36. ),
  37. ),
  38. // application components
  39. ‘components’=>array(
  40. ‘user’=>array(
  41. // enable cookie-based authentication
  42. ‘allowAutoLogin’=>true,
  43. ),
  44. // uncomment the following to enable URLs in path-format
  45. /*
  46. ‘urlManager’=>array(
  47. ‘urlFormat’=>’path’,
  48. ‘rules’=>array(
  49. ‘<controller:\w+>/<id:\d+>’=>'<controller>/view’,
  50. ‘<controller:\w+>/<action:\w+>/<id:\d+>’=>'<controller>/<action>’,
  51. ‘<controller:\w+>/<action:\w+>’=>'<controller>/<action>’,
  52. ),
  53. ),
  54. */
  55. // MySQL database
  56. ‘db’=>array(
  57. ‘connectionString’ => ‘mysql:host=localhost;dbname=dbname’,
  58. ’emulatePrepare’ => true,
  59. ‘username’ => ‘root’,
  60. ‘password’ => ”,
  61. ‘charset’ => ‘utf8’,
  62. ),
  63. ‘errorHandler’=>array(
  64. // use ‘site/error’ action to display errors
  65. ‘errorAction’=>’site/error’,
  66. ),
  67. ‘log’=>array(
  68. ‘class’=>’CLogRouter’,
  69. ‘routes’=>array(
  70. array(
  71. ‘class’=>’CFileLogRoute’,
  72. ‘levels’=>’error, warning’,
  73. ),
  74. // uncomment the following to show log messages on web pages
  75. array(
  76. ‘class’=>’CWebLogRoute’,
  77. ),
  78. ),
  79. ),
  80. ),
  81. // application-level parameters that can be accessed
  82. // using Yii::app()->params[‘paramName’]
  83. ‘params’=>array(
  84. // this is used in contact page
  85. ‘adminEmail’=>’webmaster@example.com’,
  86. ‘loginType’=>”,
  87. ),
  88. );

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

 

四、生成后台model

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

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

请注意下图:

QQ截图20180902145010

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

五、实现前后台登陆

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

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

 

汇报完毕。坐等挨喷。

转载请注明:XAMPP中文组官网 » yii 前后台分离及登陆验证

您必须 登录 才能发表评论!