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.pswp.cn/news/286624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286624.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286624.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

雙谷人才財務管理(序)

IT是一個迅速發展的行業&#xff0c;教育是一個良心的行業&#xff0c;兩者交集——IT培訓&#xff0c;在整個市場中占有一個不可或缺的地位。好多大學生&#xff0c;抱怨找不到工作&#xff1b;好多企業找不到合適的程序員&#xff0c;這幾年這個問題越來越嚴重。。。。于是IT…

Android之打開手機系統相冊

1、需求 打開系統相冊&#xff0c;獲取圖片進行掃描操作 2、代碼實現 Intent pickIntent new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);pickIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");Ca…

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等常見應用。動態應用系統通常與數據庫系統、緩存系統、分布式存儲系統等密不可分。   大型動態應用…

Android之webview長按超鏈接類型獲取鏈接文字及url、長按圖片鏈接類型分別獲取圖片和鏈接的url

1 、需求 webview長按超鏈接獲取鏈接文字及urlwebview長按圖片鏈接類型獲分別獲取圖片和鏈接的url 2、解決辦法 1)、設置webview的OnLongClickListener事件,關鍵代碼如下 companion object {const val LINK_TYPE = 1const val IMAGE_LINK_TYPE = 2}var mHandler = object :…

PostgreSQL 統計信息pg_statistic格式及導入導出dump_stat - 兼容Oracle

標簽 PostgreSQL , dump_stat , 統計信息 , 導出導入 背景 《PostgreSQL 規格評估 - 微觀、宏觀、精準 多視角估算數據庫性能(選型、做預算不求人)》 EXPLAIN是PG數據庫用于輸出SQL執行計劃的語法&#xff0c; 1、生成的執行計劃中包含COST一項。 如果校準了成本因子&#xff0…

PHP: 手把手編寫自己的 MVC 框架實例教程

1 什么是MVC MVC模式&#xff08;Model-View-Controller&#xff09;是軟件工程中的一種軟件架構模式&#xff0c;把軟件系統分為三個基本部分&#xff1a;模型&#xff08;Model&#xff09;、視圖&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。 …

freemarker 異常處理

SSH2處理方案&#xff1a; freemarker文件如果出錯&#xff0c;網站的前臺頁面會報出很明顯的錯誤-焦黃的背景&#xff0c;血紅的文字&#xff0c;很不利于用戶體驗的。如何修改這個問題呢&#xff1f;首先需要在struts.xml配置文件里添加下面一行代碼&#xff1a; 1<consta…

ArcGIS10.8按屬性選擇中根據關鍵字like模糊查詢方法總結

在實際工作中,通常需要按照某一個或某幾個關鍵字進行模糊查詢,已到達快速、準確、高效查詢的目的。在ArcGIS中是通過SQL語句,利用關鍵字like來實現的。例如我們可以借助like快速查詢滿足以某一個關鍵字開頭,以某一個關鍵字結尾,或者包含某一個關鍵字的結果。 在ArcGIS中,…

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上又要…

Android之靠譜的Activity從底部向上彈出,finish從頂部向下消失(不黑屏)

1 、需求 要求Activity從底部向上彈出,finish從頂部向下消失(不黑屏) 2、解決辦法 準備3個動畫xml文件 app_bottom_in.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/andro…

ArcGIS10.8中如何獲取線狀、面狀數據的折點,并計算折點坐標?

如下圖所示為面狀要素,ArcGIS10.8中如何獲取線狀和面狀數據的折點(起點、終點、中點、端點),并計算折點的坐標(X,Y,Z,M)? 下圖所示為線狀(Polyline)和面狀(Polygon)要素的起點、終點和折點的示意圖。

Linux命令大總結(早期學習時的筆記)

Linux命令大總結 ------------------------------------------------------------------------------------ 開機自啟動命令行模式和圖形模式&#xff1a; vi /etc/inittab 改3為命令行模式 改5為圖形模式 開關機命令&#xff1a; 關機 init 0 shtudown -h now 重啟…

[轉]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; – 我寫文案的目的為什么要讓用…