yii 进入后台 inex.php,yii 前后台分离及登陆验证

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

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

/**

* This is the bootstrap file for test application.

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

*/

// change the following paths if necessary

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

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

// remove the following line when in production mode

defined('YII_DEBUG')ordefine('YII_DEBUG',true);

require_once($yii);

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

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

二、建立配置文件

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

admin

|-- config

|   `-- main.php

|-- controllers

|   `-- SiteController.php

|-- models

|   |-- ContactForm.php

|   |-- LoginForm.php

|   `-- Operator.php

|-- runtime

|   |--

`-- views

|-- layouts

|   |-- column1.php

|   |-- column2.php

|   `-- main.php

`-- site

|-- contact.php

|-- error.php

|-- index.php

|-- login.php

`-- pages

`-- about.php

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

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

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

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

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

$backend=dirname(dirname(__FILE__));

$frontend=dirname($backend);

Yii::setPathOfAlias('backend',$backend);

// 下面是通用配置

returnarray(

//  着重注意修改的地方

'basePath'=>$frontend,

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

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

'runtimePath'=>$backend.'/runtime',

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

// preloading 'log' component

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

// autoloading model and component classes

'import'=>array(

'application.models.*',

'application.components.*',

//  着重注意修改的地方

'backend.models.*',

'backend.components.*',

'ext.*',ext),

'modules'=>array(

//  Gii tool

'gii'=>array(

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

'password'=>'password',

'generatorPaths'=>array(

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

),

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

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

),

),

// application components

'components'=>array(

'user'=>array(

// enable cookie-based authentication

'allowAutoLogin'=>true,

),

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

/*

'urlManager'=>array(

'urlFormat'=>'path',

'rules'=>array(

'/'=>'/view',

'//'=>'/',

'/'=>'/',

),

),

*/

//   MySQL database

'db'=>array(

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

'emulatePrepare'=> true,

'username'=>'root',

'password'=>'',

'charset'=>'utf8',

),

'errorHandler'=>array(

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

'errorAction'=>'site/error',

),

'log'=>array(

'class'=>'CLogRouter',

'routes'=>array(

array(

'class'=>'CFileLogRoute',

'levels'=>'error, warning',

),

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

array(

'class'=>'CWebLogRoute',

),

),

),

),

// application-level parameters that can be accessed

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

'params'=>array(

// this is used in contact page

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

'loginType'=>'',

),

);

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

四、生成后台model

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

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

请注意下图:

4bacc7d7d776cf2ff3e8adfcef2a3a23.png

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

五、实现前后台登陆

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

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

汇报完毕。坐等挨喷。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值