日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

yii 前后台分离及登陆验证

發布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii 前后台分离及登陆验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>


比較合理的做法其實是分成兩個框架來布署;然而這樣說法也太絕對。

事實上是針對不同系統,應采用不同的方法。如為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?

  • /**?

  • ??????????????????????????????*?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')?or?define('YII_DEBUG',true);??

  • ??

  • require_once($yii);??

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


  • ps:因為我將yii移到了項目之外,所以配置請以具體環境為準,此例僅做參照。

    二、建立配置文件

    在protected目錄下建立admin目錄,然后將protected下的config里的main.pphp拷貝過來;在admin目錄依次建立controllers,models,views目錄;然后將protected下的site相關目錄考貝過來,放在相應層次。參考主目錄結構建立如下:

    [html]?view plaincopyprint?

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

    [php]?view plaincopyprint?

  • <?php??

  • ??

  • //?這里使用了一個擴展,故定義了一個別名??

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

  • //?下面是分離前后臺需要增加的??

  • $backend=dirname(dirname(__FILE__));??

  • $frontend=dirname($backend);??

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

  • ??

  • //?下面是通用配置??

  • return?array(??

  • ????????<span?style="color:#ff6666;">//??著重注意修改的地方??

  • ????????'basePath'?=>?$frontend,??

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

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

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

  • ????????'name'=>'后臺管理程序',??

  • ??

  • ????????//?preloading?'log'?component??

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

  • ??

  • ????????//?autoloading?model?and?component?classes??

  • ????????'import'=>array(??

  • ????????????'application.models.*',??

  • ????????????'application.components.*',??

  • ????????????<span?style="color:#ff6666;">?//??著重注意修改的地方??

  • ????????????'backend.models.*',??

  • ????????????'backend.components.*',</span>??

  • ????????????'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(?

  • ???????????????????'<controller:\w+>/<id:\d+>'=>'<controller>/view',?

  • ???????????????????'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',?

  • ???????????????????'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',?

  • ???????????????????),?

  • ???????????????????),?

  • ?????????????????*/??

  • ??

  • ????????????????//???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

    請注意下圖:


    這里可以選擇要生成的models的位置,默認的是applications.models。其實,一個gii也可以生成前后臺models但用起來稍閑麻煩。

    五、實現前后臺登陸

    驗證部分不說了,修改UserIdentity.php和用戶模型。具體可參考這里

    主要的是在config/main.php里的params里增加了‘logintype’參數,用于標識登陸用戶類型。這里是急中生智的辦法,希望大俠們提出更好的方法。


    匯報完畢。坐等挨噴。




    轉載于:https://my.oschina.net/yonghan/blog/533174

    總結

    以上是生活随笔為你收集整理的yii 前后台分离及登陆验证的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。